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