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

Texture3D.SetPixelData

提出变更建议

成功!

感谢您帮助我们提高 Unity 文档的质量。尽管我们无法接受所有提交,但我们会阅读用户提出的每一条变更建议,并在适用的地方进行更新。

关闭

提交失败

由于某种原因,无法提交您提出的变更建议。请在几分钟后<a>重试</a>。同时感谢您拨冗帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

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

声明

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

参数

data 要使用的数据数组。
mipLevel 要写入的多级纹理级别。范围是 0 到纹理的 Texture.mipmapCount。默认值为 0
sourceDataStartIndex 开始复制的源数组中的索引。默认值为 0

描述

直接在 CPU 内存中设置整个多级纹理级别的原始数据。

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

如果要将压缩或其他非颜色纹理格式数据加载到纹理中,则可以使用 SetPixelData

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

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

其他资源:SetPixelsGetPixelDataApply

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); } }