• 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));
  • 相关阅读:
    想你了
    新华都总裁兼CEO唐骏演讲
    中国99%的白领以及他们的家庭即将面临破产
    你的英语水平就可以达到跟美国人交流的水平啦
    经验语录
    荒谬的加息传言
    人生格言
    不要为油荒找借口
    房地产调控失利 三次调控势不可免
    假设你的月收入2000元,你应该这样用
  • 原文地址:https://www.cnblogs.com/luguoshuai/p/8677707.html
Copyright © 2020-2023  润新知