source | 要读取的视图的矩形区域。将从当前渲染目标读取像素。 |
destX | 纹理中的水平像素位置,用于放置读取的像素。 |
destY | 纹理中的垂直像素位置,用于放置读取的像素。 |
recalculateMipMaps | 读取后是否应重新计算纹理的多级渐进纹理? |
将屏幕像素读取到保存的纹理数据中。
这会将当前处于激活状态的 RenderTexture 或视图(由 source
参数指定)中的矩形像素区域复制到
由 destX
和 destY
定义的位置。两个坐标都使用像素空间 - (0,0) 为左下方。
如果 recalculateMipMaps
设置为 true,则还将更新纹理的 Mip 贴图。如果 recalculateMipMaps
设置为 false,则必须调用 Apply 对其进行重新计算。
当渲染目标具有类似的格式时(例如,通常的 32 或 16 位渲染纹理),该函数适用于 ARGB32
、ARGB32
和 RGB24
纹理格式。
此外,该函数还支持从 HDR 渲染目标(ARGBFloat 或 ARGBHalf 渲染纹理格式)读入 HDR 纹理格式(RGBAFloat 或 RGBAHalf)。
纹理还必须在 texture import settings 中设置 read/write enabled 标志。
// Attach this script to a Camera //Also attach a GameObject that has a Renderer (e.g. a cube) in the Display field //Press the space key in Play mode to capture
using UnityEngine;
public class Example : MonoBehaviour { // Grab the camera's view when this variable is true. bool grab;
// The "m_Display" is the GameObject whose Texture will be set to the captured image. public Renderer m_Display;
private void Update() { //Press space to start the screen grab if (Input.GetKeyDown(KeyCode.Space)) grab = true; }
private void OnPostRender() { if (grab) { //Create a new texture with the width and height of the screen Texture2D texture = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false); //Read the pixels in the Rect starting at 0,0 and ending at the screen's width and height texture.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0, false); texture.Apply(); //Check that the display field has been assigned in the Inspector if (m_Display != null) //Give your GameObject with the renderer this texture m_Display.material.mainTexture = texture; //Reset the grab state grab = false; } } }
另请参阅:EncodeToPNG。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.