参考链接:

https://www.cnblogs.com/Jimm/p/5951362.html

一.相关API

1.Texture2D.ReadPixels

从RenderTexture.active中复制像素,以左下角为原点。

2.MonoBehaviour.OnPostRender

当相机渲染完所有物体就会调用该方法,并且只有当这个脚本挂在相机时才会调用。

二.测试

新建一个场景,新建一个camera和一个go,把go设置为一个单独的层,让camera单独照这个层,主camera不要照这个层。调整camera的深度和targetTexture。

 using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.IO; public class TestRenderTexture : MonoBehaviour { public Camera camera;
public RawImage rawImage;
bool isScreenShot = false; void Update()
{
//将镜头的画面保存到本地
if (Input.GetKeyDown(KeyCode.Q))
{
Texture2D tex = RenderTexture2Texture2D(camera.targetTexture); //展示
rawImage.texture = tex; //保存到本地
byte[] bytes = tex.EncodeToPNG();
File.WriteAllBytes(Application.dataPath + "/RenderTexture/Test.png", bytes);
UnityEditor.AssetDatabase.Refresh();
} //屏幕截图(方法1)
if (Input.GetKeyDown(KeyCode.W))
{
StartCoroutine(ScreenShotIEnumerator());
} //屏幕截图(方法2)
if (Input.GetKeyDown(KeyCode.E))
{
isScreenShot = true;
}
} public IEnumerator ScreenShotIEnumerator()
{
yield return new WaitForEndOfFrame();
rawImage.texture = ScreenShot();
} private void OnPostRender()
{
//Debug.Log("OnPostRender");
if (isScreenShot)
{
isScreenShot = false;
rawImage.texture = ScreenShot();
}
} //屏幕截图
public Texture2D ScreenShot()
{
Texture2D tex = new Texture2D(Screen.width, Screen.height, TextureFormat.ARGB32, false);
tex.ReadPixels(new Rect(, , Screen.width, Screen.height), , );
tex.Apply();
return tex;
} //RenderTexture转Texture2D
public Texture2D RenderTexture2Texture2D(RenderTexture rt)
{
RenderTexture preRT = RenderTexture.active;
RenderTexture.active = rt;
Texture2D tex = new Texture2D(rt.width, rt.height, TextureFormat.ARGB32, false);
tex.ReadPixels(new Rect(, , rt.width, rt.height), , );
tex.Apply();
RenderTexture.active = preRT;
return tex;
}
}

最新文章

  1. Android数据加密之异或加密算法
  2. CUBRID学习笔记 47 show
  3. API中FileReader 接口事件
  4. 【转载】Windows/Office“神key的来源”(附win8神key)
  5. iOS - SWift3 & XCode8
  6. MVC 实现计算页面执行时间
  7. [Redux] Using withRouter() to Inject the Params into Connected Components
  8. 逆转字符串leetcode
  9. laravel框架——学习笔记
  10. win7 清理系统
  11. openstack私有云布署实践【13.2 网络Neutron-compute节点配置(办公网环境)】
  12. AOJ/初等排序习题集
  13. zend studio里面这块注释是用什么快捷键按出来的?
  14. harbor在谷歌云上搭建 日志
  15. 策略模式(Strategy Model)
  16. .net 页面传参方式总结
  17. Codeforces Round #372 (Div. 1) A. Plus and Square Root 数学题
  18. python 集合比较(交集、并集,差集)集合方法大全
  19. [Asp.net]AspNetPager分页组件
  20. 转载:详解在visual studio中使用git版本系统(图文)

热门文章

  1. 让shell脚本中的echo输出带颜色
  2. flume-ng-sql-source实现oracle增量数据读取
  3. Mysql索引分类和索引优化
  4. Linux系统下启动tomcat报错【java.util.prefs.BackingStoreException: Couldn't get file lock】的解决方法
  5. 贝尔金(Belkin)7231-4P tftp救砖
  6. 总线读写---verilog代码
  7. IIS webService 并发 性能
  8. [转]跳板机Jumpserve的生产环境配置
  9. Maven Docker部署
  10. Excel操作小结