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;
    
        }
    }
  • 相关阅读:
    R语言从基础入门到高级
    Web前端工程师职业学习路线图,分享!
    IOS中nil/Nil/NULL的区别
    Core Animation系列之CADisplayLink
    CADisplayLink 及定时器的使用
    iOS定时器NSTimer的使用方法
    IOS中定时器NSTimer的开启与关闭
    【IOS基础知识】NSTimer定时器使用
    IOS 实现自定义的导航栏背景以及自定义颜色的状态栏(支持7.0以及低版本)
    iOS7中计算UILabel中字符串的高度
  • 原文地址:https://www.cnblogs.com/lurenjiashuo/p/unity-share-current-game-screen.html
Copyright © 2011-2022 走看看