zoukankan      html  css  js  c++  java
  • unity share current game screen

    using UnityEngine;
    using System.Collections;
    using UnityEngine.UI;
    using System.IO;
    
    public class TakeScreenshot : MonoBehaviour
    {
        [Header("Managers")]
        public GameObject SM;
    
        private bool isProcessing = false;
        public float startX;
        public float startY;
        public int valueX;
        public int valueY;
    
        public void shareScreenshot()
        {
    
            if (!isProcessing)
                StartCoroutine(captureScreenshot());
        }
    
        public IEnumerator captureScreenshot()
        {
            isProcessing = true;
    
            //Wait for 1 second while we close the shop panel
            //ui change do here
            yield return new WaitForSeconds(1);
    
            yield return new WaitForEndOfFrame();
    
            Texture2D screenTexture = new Texture2D(Screen.width, Screen.height);
    
            screenTexture.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
    
            // apply
            screenTexture.Apply();
    
            //------------------------------------------------------- PHOTO
    
            byte[] dataToSave = screenTexture.EncodeToPNG();
    
            string destination = Path.Combine(Application.persistentDataPath, System.DateTime.Now.ToString("yyyy-MM-dd-HHmmss") + ".png");
    
            File.WriteAllBytes(destination, dataToSave);
    
    
            if (!Application.isEditor)
            {
                // block to open the file and share it ------------START
                AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent");
                AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");
                intentObject.Call<AndroidJavaObject>("setAction", intentClass.GetStatic<string>("ACTION_SEND"));
                AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
                AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("parse", "file://" + destination);
                intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_STREAM"), uriObject);
                intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TEXT"), "");
                intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_SUBJECT"), "");
                intentObject.Call<AndroidJavaObject>("setType", "image/jpeg");
                AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
                AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity");
    
                // option one WITHOUT chooser:
                currentActivity.Call("startActivity", intentObject);
    
                // block to open the file and share it ------------END
    
            }
            isProcessing = false;
    
        }
    }
  • 相关阅读:
    图灵访谈之二十二——Brian W. Kernighan与CS的半个世纪 (翻译)
    GIT 初探
    关于SQL的分组汇总统计(关键字 Grouping)
    根据表名生成该表的插入语句
    利用sys.dm_db_index_physical_stats查看索引碎片等数据
    SQL SERVER CURSOR
    Configuring a readonly replicated folder on Windows Server 2008 R2.
    securestring
    Sql Server查询性能优化
    七大排序速查版
  • 原文地址:https://www.cnblogs.com/lurenjiashuo/p/unity-share-current-game-screen.html
Copyright © 2011-2022 走看看