• Unity生成屏幕快照


     public static Texture2D CaptureCamera(Camera camera, Rect rect)
            {
                RenderTexture rt = new RenderTexture((int)rect.width, (int)rect.height, 0);
                RenderTexture originRtt = null;   
                Camera currCam = null;
                foreach (Camera cam in Camera.allCameras)
                {
                    if (null != cam.targetTexture) continue;
                    currCam = cam;
                    originRtt = currCam.targetTexture;
                    cam.targetTexture = rt;
                    cam.RenderDontRestore();          //手动渲染
                    cam.targetTexture = originRtt;    //注意: 需要该操作,不然会报错
                }
    
                //激活rt并从中读取像素
                RenderTexture.active = rt;
                Texture2D screenShot = new Texture2D((int)rect.width, (int)rect.height, TextureFormat.RGB24, false);
                screenShot.ReadPixels(rect, 0, 0);  //这个时候是从  RenderTexture.active 中读取数据
                screenShot.Apply();                 //这是非常消耗性能的操作,操作之前尽量多读取像素
    
                currCam.targetTexture = null;
                GameObject.Destroy(rt);
                RenderTexture.active = null;
    
                //生成 .png 快照
                byte[] bytes = screenShot.EncodeToPNG();
                string filename = Application.dataPath + "/Screenshot.png";
                System.IO.File.WriteAllBytes(filename, bytes);
    
                Debug.Log("生成了一张屏幕快照");
    
                return screenShot;
            }

    调用:

    UITexture m_TxBG.mainTexture = CaptureCamera(NGUITools.FindCameraForLayer(this.gameObject.layer), new Rect(0, 0, Screen.width, Screen.height));
  • 相关阅读:
    python appium环境搭建
    github 删除某个文件
    python 导入的模块使用了相对路径,导致找不到文件错误
    python asyncio协程
    python 获取调用函数的名字和行号
    monkey测试命令
    python 属性查询顺序,数据描述符
    JS各循环的差别
    AngularJS复习小结
    那些不正经的前端笔试题
  • 原文地址:https://www.cnblogs.com/luguoshuai/p/8677707.html
Copyright © 2020-2023  润新知