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;

    }
}
时间: 2024-08-08 10:32:43

unity share current game screen的相关文章

Capture Current Soft Screen

Bitmap memoryImage; private void CaptureScreen() { Graphics myGraphics = this.CreateGraphics(); Size s = this.Size; memoryImage = new Bitmap(s.Width, s.Height, myGraphics); Graphics memoryGraphics = Graphics.FromImage(memoryImage); memoryGraphics.Cop

Unity Flow distort of screen

Shader "ScreenWater" {Properties { _MainTex ("Base (RGB)", 2D) = "white" {} _Field ("Field Channel", 2D) = "black" {} _Flow ("Flow", 2D) = "black" {} } SubShader { Pass { ZTest Always C

开源软件之screen的第一次使用

在网上看到一篇关于linux下屏幕协作的文章,原文如下: 屏幕协作 来自产品工程的高级维护用户 David 打电话说:"为什么我不能在您部署的这些新机器上编译 supercode.c". 您会问他:"您运行的是什么机器?" David 答道:" Posh".(这个虚够的公司将它的 5 台生产服务器以纪念 Spice Girls 的方式命名).这下您可以大显身手了,另一台机器由 David 操作: # su - david 转到 posh: # s

(五)Unity5.0新特性------unity中编写脚本

?? 出处:http://blog.csdn.net/u010019717 author:孙广东      时间:2015.3.32 之前的Unity脚本 我们利用Mono(WinRT 在Windows Store Apps 和Windows Phone上) 使用 C# ,获得第三方库和接近本机性能的易用性.然而,有一些挑战: C# 运行时性能仍然落后于 C/c + + 最新和最好的.NET 语言和运行时功能在Unity's current version of Mono并不支持. 大约 23

Unity 截图方法

调用Unity API ScreenCapture.CaptureScreenshot("screen.png", 0); 截图的图片仅能保存为png格式,且第一个形参必须加.png 第二个参数为设定分辨率,大于1的情况下会增加分辨率,如为4,则是默认分辨率的4倍 只能保存在Application.persistentDataPath目录下 函数本身只能截全屏,如果实在要截部分屏幕,可以通过在截图后,当作本地图片读取后,进行修改 使用Texture2D.ReadPixels方法,该方法

实操UNITY3D接入91SDK安卓版

原地址:http://bbs.18183.com/thread-149758-1-1.html 本文内容为创建UNITY3D接入91SDK的DEMO的具体操作过程.本人水平有限,UNITY3D与Android如何交互的技术请大家参看雨松的博客.我的开发环境: MAC系统, ECLIPSE, UNITY4.0开发过程:1.准备要UNITY为交互Android自备的CLASS.JAR文件.   我的操作过程是:应用程序->UNTITY文件夹->UNITY->右键:显示包内容->CONT

进入vcenter ssh

Category Archives: vCenter Running Docker inside of VCSA 6.7 Posted by Mark Ukotic on September 19, 2018No comments During this years VMware {code} Hackathon at VMworld Vegas I submitted a team project which ran PowerShell within the vSphere Client. 

NHibernate官方文档中文版--基础ORM(Basic O/R Mapping)

映射声明 对象/关系映射在XML文件中配置.mapping文件这样设计是为了使它可读性强并且可修改.mapping语言是以对象为中心,意味着mapping是围绕着持久化类声明来建立的,而不是围绕数据表. 要注意的是,尽管很多NHibernate使用者选择手动定义XML文件,但是仍然有很多工具可以用来生成mapping文件,包括NHibernate.Mapping.Attributes 库和各种各样基于模板的代码生成工具(CodeSmith, MyGeneration). 让我们用一个mappin

vi 使用指南

键盘移动 (Move) 一切都从键盘的移动k -> 上 upj -> 下 downh -> 左 leftl -> 右 rightz -> 重画屏幕,当前光标变成屏幕的第一行 (redraw current line at top of window)CTRL-f -> 跳到下一页 (page down)CTRL-b -> 跳到上一页 (page up) 跳跃指令 (jumps) 跳跃指令类似于游览器中的<前进><后退>按钮CTRL-] -&