参考链接:

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

[Unity基础]RenderTexture的更多相关文章

  1. Unity基础6 Shadow Map 阴影实现

    这篇实现来的有点墨迹,前前后后折腾零碎的时间折腾了半个月才才实现一个基本的shadow map流程,只能说是对原理理解更深刻一些,但离实际应用估计还需要做很多优化.这篇文章大致分析下shadow ma ...

  2. unity 基础之InputManager

    unity  基础之InputManager 说一下unity中的InputManager,先截个图 其中Axes指的是有几个轴向!Size指的是有几个轴,改变Size可以添加或者减少轴! Name指 ...

  3. unity 基础学习 transform

    unity  基础学习   transform 1.unity采用的是右手坐标系,X轴右手为+,Y轴向上为+,Z轴朝里为+; 但是我们从3D MAX中导入模型之后,发现轴向并没有遵从这个原理, 其实是 ...

  4. Unity 基础

    Unity 基础是unity入门的关键.他将讲解Unity的界面, 菜单项,使用资源,创设场景,并发布版本. 当你读完这段,你将理解unity是怎么工作的,如何有效地使用它,并且完成一个基本的游戏. ...

  5. NET笔记——IOC详解和Unity基础使用介绍

    说起IOC,可能很多初学者不知道是用来做什么的,今天正好有点时间,就来扫扫盲,顺便巩固下自己. IOC全称是Inversion Of Control,意为控制反转(这些自然百度也有),可什么是控制反转 ...

  6. IOC详解和Unity基础使用介绍

    说起IOC,可能很多初学者不知道是用来做什么的,今天正好有点时间,就来扫扫盲,顺便巩固下自己. IOC全称是Inversion Of Control,意为控制反转(这些自然百度也有),可什么是控制反转 ...

  7. unity基础命令

    获取所挂脚本元素的组件: rd = GetComponent<Rigidbody>(); 获取其他元素的组件: rd = GameObject.Find("Player" ...

  8. 【Unity Shader学习笔记】Unity基础纹理-法线贴图

    1 高度纹理 使用一张纹理改变物体表面法线,为模型提供更多细节. 有两种主要方法: 1.高度映射:使用一张高度纹理(height map)来模拟表面位移(displacement).得到一个修改后的法 ...

  9. Unity基础知识学习笔记二

    1,object Instantiate(object original,Vector3 position,Quaternion rotation)       克隆原始物体,并返回克隆物体.     ...

随机推荐

  1. ionic platform add ios, Error:spawn EACCES

    RT: cordova ionic 环境搭建好之后,需要添加平台才能打包,添加平台如果出错:Error:spawn EACCES, 原因是因为没添加hooks, 请使用 ionic add hooks ...

  2. MySQL测试报告

    硬件配置: 3台服务器:192.168.23.168,  192.168.23.169,  192.168.23.170 硬盘:230G 内存:16G Linux内核:Linux geoserver. ...

  3. NDK学习笔记(Add.cpp注释)(一)

    // Add.C // Copyright (c) 2009 The Foundry Visionmongers Ltd. All Rights Reserved. static const char ...

  4. 【巷子】---flux---【react】

    一.什么是Flux Flux 是一种架构思想,专门解决软件的结构问题.它跟MVC 架构是同一类东西,但是更加简单和清晰. 二.flux的基本概念 (1) .Flux由4部分组成 1.View:视图层 ...

  5. 开IE时 暴卡

    待打开IE后,在“工具”-“管理加载项”中禁用所有加载项.

  6. CheckFail设计很垃圾

        function checkFail(node, onError, fuckIE) {         var id = node.src;//检测是否死链         node.onlo ...

  7. git 日常

    git 恢复到上一个版本比如执行 git commit 命令之后 做了一些修改 恢复到上一个版本 1.修改一个文件想回到修改前 直接 git checkout -- filename 2.修改过文件, ...

  8. CreateUserWizard控件的使用

    “CreateUserWizard”控件用于收集潜在用户所提供的信息.默认情况下,“CreateUserWizard”控件会将新用户添加到 ASP.NET 成员身份系统中.有关 ASP.NET 成员资 ...

  9. elasticsearch 口水篇(6) Mapping 定义索引

    前面我们感觉ES就想是一个nosql数据库,支持Free Schema. 接触过Lucene.solr的同学这时可能会思考一个问题——怎么定义document中的field?store.index.a ...

  10. 【Spring学习笔记-2.1】Spring的设值注入和构造注入

    设值注入: 先通过无参数的构造函数创建一个Bean实例,然后调用对应的setter方法注入依赖关系: 配置文件: <?xml version="1.0" encoding=& ...