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;
    
        }
    }
  • 相关阅读:
    本地计算机 上的 Redis Server 服务启动后停止
    RabbitMQ 命令行
    mysql ORDER BY 中文出现错误问题
    使用javascript纯前端导出excel
    软件测试概念学习
    excel控件只为简单写入数据表--github找到ExcelUtil笔记
    快速创建Spring web项目
    PQGrid商业化的表格组件
    mybatis传入参数为0被误认为是空字符串的解决方法
    MyBatis like报错
  • 原文地址:https://www.cnblogs.com/lurenjiashuo/p/unity-share-current-game-screen.html
Copyright © 2011-2022 走看看