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

Cubemap.SetPixelData

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

声明

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

声明

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

参数

data 要使用的 data 数组。
mipLevel 要写入的mipmap 级。范围是 0 至纹理的 Texture.mipmapCount。默认值为 0
face 要写入的 CubemapFace
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 void Start() { Cubemap cubemap = new Cubemap(2, TextureFormat.RGB24, true);

var byteArray = new byte[] {255, 0, 0, 0, 255, 0, 0, 0, 255, 255, 235, 4, 255, 0, 255, 255, 255, 255, 0, 0, 0, 0, 255, 255, 255, 0, 255};

cubemap.SetPixelData(byteArray, 0, CubemapFace.PositiveX); cubemap.SetPixelData(byteArray, 1, CubemapFace.PositiveX, 12);

cubemap.SetPixelData(byteArray, 0, CubemapFace.NegativeX, 15); cubemap.SetPixelData(byteArray, 1, CubemapFace.NegativeX, 12);

cubemap.SetPixelData(byteArray, 0, CubemapFace.PositiveY); cubemap.SetPixelData(byteArray, 1, CubemapFace.PositiveY, 12);

cubemap.SetPixelData(byteArray, 0, CubemapFace.NegativeY, 15); cubemap.SetPixelData(byteArray, 1, CubemapFace.NegativeY, 12);

cubemap.SetPixelData(byteArray, 0, CubemapFace.PositiveZ); cubemap.SetPixelData(byteArray, 1, CubemapFace.PositiveZ, 12);

cubemap.SetPixelData(byteArray, 0, CubemapFace.NegativeZ, 15); cubemap.SetPixelData(byteArray, 1, CubemapFace.NegativeZ, 12);

cubemap.Apply(updateMipmaps: false); } }