<div class="cnblogs_code">
<span style="color: #0000ff">public <span style="color: #0000ff">class<span style="color: #000000"> TakeScreenshot : MonoBehaviour
{
[Header(<span style="color: #800000">"<span style="color: #800000">Managers<span style="color: #800000">"<span style="color: #000000">)]
<span style="color: #0000ff">public<span style="color: #000000"> GameObject SM;</span><span style="color: #0000ff">private</span> <span style="color: #0000ff">bool</span> isProcessing = <span style="color: #0000ff">false</span><span style="color: #000000">; </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">float</span><span style="color: #000000"> startX; </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">float</span><span style="color: #000000"> startY; </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span><span style="color: #000000"> valueX; </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">int</span><span style="color: #000000"> valueY; </span><span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span><span style="color: #000000"> shareScreenshot() { </span><span style="color: #0000ff">if</span> (!<span style="color: #000000">isProcessing) StartCoroutine(captureScreenshot()); } </span><span style="color: #0000ff">public</span><span style="color: #000000"> IEnumerator captureScreenshot() { isProcessing </span>= <span style="color: #0000ff">true</span><span style="color: #000000">; </span><span style="color: #008000">//</span><span style="color: #008000">Wait for 1 second while we close the shop panel </span><span style="color: #008000">//</span><span style="color: #008000">ui change do here</span> <span style="color: #0000ff">yield</span> <span style="color: #0000ff">return</span> <span style="color: #0000ff">new</span> WaitForSeconds(<span style="color: #800080">1</span><span style="color: #000000">); </span><span style="color: #0000ff">yield</span> <span style="color: #0000ff">return</span> <span style="color: #0000ff">new</span><span style="color: #000000"> WaitForEndOfFrame(); Texture2D screenTexture </span>= <span style="color: #0000ff">new</span><span style="color: #000000"> Texture2D(Screen.width,Screen.height); screenTexture.ReadPixels(</span><span style="color: #0000ff">new</span> Rect(<span style="color: #800080">0</span>,<span style="color: #800080">0</span>,Screen.width,Screen.height),<span style="color: #800080">0</span><span style="color: #000000">); </span><span style="color: #008000">//</span><span style="color: #008000"> apply</span>
<span style="color: #000000"> screenTexture.Apply();
</span><span style="color: #008000">//</span><span style="color: #008000">------------------------------------------------------- PHOTO</span> <span style="color: #0000ff">byte</span>[] dataToSave =<span style="color: #000000"> screenTexture.EncodeToPNG(); </span><span style="color: #0000ff">string</span> destination = Path.Combine(Application.persistentDataPath,System.DateTime.Now.ToString(<span style="color: #800000">"</span><span style="color: #800000">yyyy-MM-dd-HHmmss</span><span style="color: #800000">"</span>) + <span style="color: #800000">"</span><span style="color: #800000">.png</span><span style="color: #800000">"</span><span style="color: #000000">); File.WriteAllBytes(destination,dataToSave); </span><span style="color: #0000ff">if</span> (!<span style="color: #000000">Application.isEditor) { </span><span style="color: #008000">//</span><span style="color: #008000"> block to open the file and share it ------------START</span> AndroidJavaClass intentClass = <span style="color: #0000ff">new</span> AndroidJavaClass(<span style="color: #800000">"</span><span style="color: #800000">android.content.Intent</span><span style="color: #800000">"</span><span style="color: #000000">); AndroidJavaObject intentObject </span>= <span style="color: #0000ff">new</span> AndroidJavaObject(<span style="color: #800000">"</span><span style="color: #800000">android.content.Intent</span><span style="color: #800000">"</span><span style="color: #000000">); intentObject.Call</span><AndroidJavaObject>(<span style="color: #800000">"</span><span style="color: #800000">setAction</span><span style="color: #800000">"</span>,intentClass.GetStatic<<span style="color: #0000ff">string</span>>(<span style="color: #800000">"</span><span style="color: #800000">ACTION_SEND</span><span style="color: #800000">"</span><span style="color: #000000">)); AndroidJavaClass uriClass </span>= <span style="color: #0000ff">new</span> AndroidJavaClass(<span style="color: #800000">"</span><span style="color: #800000">android.net.Uri</span><span style="color: #800000">"</span><span style="color: #000000">); AndroidJavaObject uriObject </span>= uriClass.CallStatic<AndroidJavaObject>(<span style="color: #800000">"</span><span style="color: #800000">parse</span><span style="color: #800000">"</span>,<span style="color: #800000">"</span><span style="color: #800000">file://</span><span style="color: #800000">"</span> +<span style="color: #000000"> destination); intentObject.Call</span><AndroidJavaObject>(<span style="color: #800000">"</span><span style="color: #800000">putExtra</span><span style="color: #800000">"</span>,intentClass.GetStatic<<span style="color: #0000ff">string</span>>(<span style="color: #800000">"</span><span style="color: #800000">EXTRA_STREAM</span><span style="color: #800000">"</span><span style="color: #000000">),uriObject); intentObject.Call</span><AndroidJavaObject>(<span style="color: #800000">"</span><span style="color: #800000">putExtra</span><span style="color: #800000">"</span>,intentClass.GetStatic<<span style="color: #0000ff">string</span>>(<span style="color: #800000">"</span><span style="color: #800000">EXTRA_TEXT</span><span style="color: #800000">"</span>),<span style="color: #800000">""</span><span style="color: #000000">); intentObject.Call</span><AndroidJavaObject>(<span style="color: #800000">"</span><span style="color: #800000">putExtra</span><span style="color: #800000">"</span>,intentClass.GetStatic<<span style="color: #0000ff">string</span>>(<span style="color: #800000">"</span><span style="color: #800000">EXTRA_SUBJECT</span><span style="color: #800000">"</span>),<span style="color: #800000">""</span><span style="color: #000000">); intentObject.Call</span><AndroidJavaObject>(<span style="color: #800000">"</span><span style="color: #800000">setType</span><span style="color: #800000">"</span>,<span style="color: #800000">"</span><span style="color: #800000">image/jpeg</span><span style="color: #800000">"</span><span style="color: #000000">); AndroidJavaClass unity </span>= <span style="color: #0000ff">new</span> AndroidJavaClass(<span style="color: #800000">"</span><span style="color: #800000">com.unity3d.player.UnityPlayer</span><span style="color: #800000">"</span><span style="color: #000000">); AndroidJavaObject currentActivity </span>= unity.GetStatic<AndroidJavaObject>(<span style="color: #800000">"</span><span style="color: #800000">currentActivity</span><span style="color: #800000">"</span><span style="color: #000000">); </span><span style="color: #008000">//</span><span style="color: #008000"> option one WITHOUT chooser:</span> currentActivity.Call(<span style="color: #800000">"</span><span style="color: #800000">startActivity</span><span style="color: #800000">"</span><span style="color: #000000">,intentObject); </span><span style="color: #008000">//</span><span style="color: #008000"> block to open the file and share it ------------END</span>
<span style="color: #000000">
}
isProcessing = <span style="color: #0000ff">false<span style="color: #000000">;}
}