版本: Unity 6 (6000.0)
语言English
  • C#

Texture2DArray.SetPixelData

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public void SetPixelData(T[] data, int mipLevel, int element, int sourceDataStartIndex = 0);

声明

public void SetPixelData(NativeArray<T> data, int mipLevel, int element, int sourceDataStartIndex = 0);

参数

data 要使用的数组数据。
mipLevel 要写入的 Mipmap 级别。范围为 0 到纹理的 Texture.mipmapCount。默认值为 0
element 要将像素复制到的数组切片。
sourceDataStartIndex 在源数组中开始复制的索引。默认值为 0

描述

直接在 CPU 内存中设置整个 Mipmap 级别的数据。

此方法设置 CPU 内存中纹理的像素数据。 Texture.isReadable 必须为 true,并且必须在 SetPixelData 后调用 Apply 以将更改的像素上传到 GPU。

SetPixelData 在您想要将压缩或其他非颜色纹理格式数据加载到纹理中时很有用。

data 数组的大小必须是 Mipmap 级别宽度×高度,并且数据布局必须与纹理格式匹配,否则 SetPixelData 将失败。如果您不想定义自定义结构体以匹配纹理格式,则可以使用 byte 作为 T

SetPixelData 失败时,Unity 会抛出异常。

其他资源:SetPixelsGetPixelDataApply

using UnityEngine;

public class ExampleScript : MonoBehaviour { public Texture2DArray texture; public void Start() { texture = new Texture2DArray(2, 2, 3, TextureFormat.RGB24, true); var data = new byte[] { // mip 0: 2x2 size 255, 0, 0, // red 0, 255, 0, // green 0, 0, 255, // blue 255, 235, 4, // yellow // mip 1: 1x1 size 0, 255, 255 // cyan }; texture.SetPixelData(data, 0, 0, 0); // mip 0 texture.SetPixelData(data, 1, 0, 12); // mip 1 texture.filterMode = FilterMode.Point; texture.Apply(updateMipmaps: false); } }