data | 要使用的数据数组。 |
mipLevel | 要写入的多级纹理级别。范围是 0 到纹理的 Texture.mipmapCount。默认值为 0 。 |
sourceDataStartIndex | 开始复制的源数组中的索引。默认值为 0 。 |
直接在 CPU 内存中设置整个多级纹理级别的原始数据。
此方法为 CPU 内存中的纹理设置像素数据。Texture.isReadable 必须为 true
,并且必须在 SetPixelData
后调用 Apply,以将更改后的像素上传到 GPU。
如果要将压缩或其他非颜色纹理格式数据加载到纹理中,则可以使用 SetPixelData
。data
数组的大小必须是多级纹理级别的宽度 × 高度 × 深度,并且数据布局必须匹配纹理格式,否则 SetPixelData
失败。如果您不想定义自定义结构来匹配纹理格式,则可以使用 byte
作为 T
。
当 SetPixelData
失败时,Unity 会抛出异常。
其他资源:SetPixels、GetPixelData、Apply。
using UnityEngine;
public class ExampleScript : MonoBehaviour { public Texture3D texture; public void Start() { texture = new Texture3D(2, 2, 2, TextureFormat.RGB24, true); var data = new byte[] { 255, 0, 0, // red 0, 255, 0, // green 0, 0, 255, // blue 255, 235, 4, // yellow 128, 0, 0, // dark red 0, 128, 0, // dark green 0, 0, 128, // dark blue 128, 117, 4, // dark yellow }; texture.SetPixelData(data, 0); texture.filterMode = FilterMode.Point; texture.Apply(updateMipmaps: false); } }