zoukankan      html  css  js  c++  java
  • Unity3d之截图

    1.Application.CaptureScreenshot("Screenshot.png", 0);  

    2.

    1. exture2D CaptureScreenshot2(Rect rect)   
    2. {  
    3.     // 先创建一个的空纹理,大小可根据实现需要来设置  
    4.     Texture2D screenShot = new Texture2D((int)rect.width, (int)rect.height, TextureFormat.RGB24,false);  
    5.   
    6.     // 读取屏幕像素信息并存储为纹理数据,  
    7.     screenShot.ReadPixels(rect, 0, 0);  
    8.     screenShot.Apply();  
    9.   
    10.     // 然后将这些纹理数据,成一个png图片文件  
    11.     byte[] bytes = screenShot.EncodeToPNG();  
    12.     string filename = Application.dataPath + "/Screenshot.png";  
    13.     System.IO.File.WriteAllBytes(filename, bytes);  
    14.     Debug.Log(string.Format("截屏了一张图片: {0}", filename));  
    15.   
    16.     // 最后,我返回这个Texture2d对象,这样我们直接,所这个截图图示在游戏中,当然这个根据自己的需求的。  
    17.     return screenShot;  
    18. }  
    19. 截全屏(如下图, 注:有ui):
      CaptureScreenshot2( new Rect( Screen.width*0f, Screen.height*0f, Screen.width*1f, Screen.height*1f));


      截中间4分之(如下图):
      CaptureScreenshot2( new Rect( Screen.width*0.25f, Screen.height*0.25f, Screen.width*0.5f, Screen.height*0.5f));

    3.

    1. Texture2D CaptureCamera(Camera camera, Rect rect)   
    2. {  
    3.     // 创建一个RenderTexture对象  
    4.     RenderTexture rt = new RenderTexture((int)rect.width, (int)rect.height, 0);  
    5.     // 临时设置相关相机的targetTexture为rt, 并手动渲染相关相机  
    6.     camera.targetTexture = rt;  
    7.     camera.Render();  
    8.         //ps: --- 如果这样加上第二个相机,可以实现只截图某几个指定的相机一起看到的图像。  
    9.         //ps: camera2.targetTexture = rt;  
    10.         //ps: camera2.Render();  
    11.         //ps: -------------------------------------------------------------------  
    12.   
    13.     // 激活这个rt, 并从中中读取像素。  
    14.     RenderTexture.active = rt;  
    15.     Texture2D screenShot = new Texture2D((int)rect.width, (int)rect.height, TextureFormat.RGB24,false);  
    16.     screenShot.ReadPixels(rect, 0, 0);// 注:这个时候,它是从RenderTexture.active中读取像素  
    17.     screenShot.Apply();  
    18.   
    19.     // 重置相关参数,以使用camera继续在屏幕上显示  
    20.     camera.targetTexture = null;  
    21.         //ps: camera2.targetTexture = null;  
    22.     RenderTexture.active = null; // JC: added to avoid errors  
    23.     GameObject.Destroy(rt);  
    24.     // 最后将这些纹理数据,成一个png图片文件  
    25.     byte[] bytes = screenShot.EncodeToPNG();  
    26.     string filename = Application.dataPath + "/Screenshot.png";  
    27.     System.IO.File.WriteAllBytes(filename, bytes);  
    28.     Debug.Log(string.Format("截屏了一张照片: {0}", filename));  
    29.       
    30.     return screenShot;  
    31. }  
  • 相关阅读:
    Atitit 人脸识别 眼睛形态 attilax总结
    Atitit 手机号码选号 规范 流程 attilax总结 v2 r99.docx
    atitit 板块分类 上市公司 龙头企业公司 列表 attilax总结.docx
    Atititi atiitt eam pam资产管理 购物表去年.xlsx
    使用cmd查看电脑连接过的wifi密码(一)
    常见十大web攻击手段 悟寰轩
    常见web攻击方式 悟寰轩
    【MYSQL数据库】MYSQL学习笔记mysql分区基本操作 悟寰轩
    Filter及FilterChain的使用详解 悟寰轩
    启动tomcat spring初始化两次问题(eg:@PostConstruct) 悟寰轩
  • 原文地址:https://www.cnblogs.com/huangshiyu13/p/5631394.html
Copyright © 2011-2022 走看看