Version: 2017.2
public void ReadPixels (Rect source, int destX, int destY, bool recalculateMipMaps= true);

参数

source 要读取的视图的矩形区域。将从当前渲染目标读取像素。
destX 纹理中的水平像素位置,用于放置读取的像素。
destY 纹理中的垂直像素位置,用于放置读取的像素。
recalculateMipMaps 读取后是否应重新计算纹理的多级渐进纹理?

描述

将屏幕像素读取到保存的纹理数据中。

这会将当前处于激活状态的 RenderTexture 或视图(由 source 参数指定)中的矩形像素区域复制到 由 destXdestY 定义的位置。两个坐标都使用像素空间 - (0,0) 为左下方。

如果 recalculateMipMaps 设置为 true,则还将更新纹理的 Mip 贴图。如果 recalculateMipMaps 设置为 false,则必须调用 Apply 对其进行重新计算。

当渲染目标具有类似的格式时(例如,通常的 32 或 16 位渲染纹理),该函数适用于 ARGB32ARGB32RGB24 纹理格式。 此外,该函数还支持从 HDR 渲染目标(ARGBFloat 或 ARGBHalf 渲染纹理格式)读入 HDR 纹理格式(RGBAFloat 或 RGBAHalf)。

纹理还必须在导入设置中设置了 Read/Write Enabled 标志。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public bool grab; public Renderer display; void OnPostRender() { if (grab) { Texture2D tex = new Texture2D(128, 128); tex.ReadPixels(new Rect(0, 0, 128, 128), 0, 0); tex.Apply(); display.material.mainTexture = tex; grab = false; } } }

另请参阅:EncodeToPNG