博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity3d之截图
阅读量:6904 次
发布时间:2019-06-27

本文共 1921 字,大约阅读时间需要 6 分钟。

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. }  

转载地址:http://imldl.baihongyu.com/

你可能感兴趣的文章
分布式Redis深度历险-Clustor
查看>>
为什么arrayList.removeAll(set)的速度远高于arrayList.removeAll(list)?
查看>>
iOS一个少代码侵入的滚动页码控件-CSFooterCircleFunctionView
查看>>
NLP系列学习:潜在语义牵引
查看>>
Swift 4官方文档中文版 Collection Types(上)
查看>>
Linux学习之初识
查看>>
NLP系列学习:DBOW句向量
查看>>
Centos7.x下Nginx安装及SSL配置与常用命令
查看>>
币安布局去中心化交易所,原来是因为这三个原因!
查看>>
Python爬虫笔记3-解析库Xpath的使用
查看>>
刷前端面经笔记(九)
查看>>
98. Validate Binary Search Tree
查看>>
《Java编程思想》读书笔记-对象导论
查看>>
mysql 的delete from where 子查询的一些限制
查看>>
【Android】Retrofit 2.0 的使用
查看>>
Java程序员幽默爆笑锦集
查看>>
工作中常用到的ES6语法
查看>>
SAPGUI系统登录页面配置的SAProuter有什么用
查看>>
小程序hover-class点击态效果——小程序体验
查看>>
安装chrome插件
查看>>