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

CubemapArray.SetPixelData

提出更改

成功!

感谢你帮助我们提升 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每条建议,并酌情进行更新。

关闭

提交失败

由于某些原因,无法提交你建议的更改。请在几分钟后<a>重试</a>。感谢你花时间帮助我们提升 Unity 文档的质量。

关闭

取消

切换到手册

声明

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

声明

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

参数

data 要使用的 data 数组。
mipLevel 要写入的 Mipmap 层级。范围为 0 到纹理的 Texture.mipmapCount。默认值为 0
face 要写入的 CubemapFace
sourceDataStartIndex 开始从源数组拷贝的索引。默认值为 0
element 要写入的数组切片。

说明

直接在 CPU 中设置一组 Mipmap 面的原始数据。

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

如果你想要将压缩的或其他非颜色纹理格式数据加载到纹理中,则 SetPixelData 很有用。

data 数组的大小必须等于该面的 Mipmap 面的宽度 × 高度,并且数据布局必须与纹理格式匹配,否则 SetPixelData 会失败。如果你不想定义自定义结构以匹配纹理格式,则如果为 T 使用 byte

SetPixelData 失败时,Unity 会引发异常。

其他资源:SetPixelsGetPixelDataApply

using UnityEngine;

public class ExampleScript : MonoBehaviour { public CubemapArray texture; public void Start() { texture = new CubemapArray(2, 2, TextureFormat.RGB24, true); var data = new byte[] { // mip 0: 2x2 size 255, 0, 0, // red 0, 255, 0, // green 0, 0, 255, // blue 255, 255, 255, // white // mip 1: 1x1 size 255, 255, 0 // yellow }; texture.SetPixelData(data, 0, CubemapFace.PositiveX, 0, 0); texture.SetPixelData(data, 1, CubemapFace.PositiveX, 0, 12); texture.Apply(updateMipmaps: false); } }