zoukankan      html  css  js  c++  java
  • 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));
  • 相关阅读:
    oracle 11g 数据库密码大小写敏感性更改
    OGG 课程 第一课
    xmanager
    一步一步在RHEL6.5+VMware Workstation 10上搭建 oracle 11gR2 rac + 物理 dg
    GTONE安装Eclipse插件
    JDK安装与环境变量配置
    JAVA基础
    操作符总结
    物理CPU查看方式
    SQL SERVER性能调优
  • 原文地址:https://www.cnblogs.com/luguoshuai/p/8677707.html
Copyright © 2011-2022 走看看