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

Texture3D.SetPixels

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

切换到手册

声明

public void SetPixels(Color[] colors, int miplevel);

声明

public void SetPixels(Color[] colors);

参数

colors 要使用的像素颜色数组。这是展平为 1D 数组的 3D 纹理。
miplevel colors 写入到的 Mip 地图等级。该范围是从 0 到纹理的 Texture.mipmapCount。默认值为 0

描述

设置整个 Mip 地图等级的像素颜色。

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

Apply 是一个耗时的操作,因为它会复制纹理中的所有像素,即使您只更改了一些像素,所以在调用它之前尽可能更改更多像素。

colors 必须包含从纹理的正面开始的逐个切片的像素。每个切片都必须包含逐行排列的像素,从纹理的左下角开始。数组的大小必须为 Mip 地图等级的宽度 × 高度 × 深度。

与多次调用 SetPixel 相比,通常一次对 SetPixels 的调用会更快,特别是对于大型纹理。

SetPixels 可能比某些其他纹理方法更慢,因为它将 Color 结构转换为纹理使用的格式。要更快地设置像素数据,请使用 SetPixelData

您可以将 SetPixels 与以下 纹理格式 一起使用

  • Alpha8
  • ARGB32
  • ARGB4444
  • BGRA32
  • R16
  • R16_SIGNED
  • R8
  • R8_SIGNED
  • RFloat
  • RG16
  • RG16_SIGNED
  • RG32
  • RG32_SIGNED
  • RGB24
  • RGB24_SIGNED
  • RGB48
  • RGB48_SIGNED
  • RGB565
  • RGB9e5Float
  • RGBA32
  • RGBA32_SIGNED
  • RGBA4444
  • RGBA64
  • RGBA64_SIGNED
  • RGBAFloat
  • RGBAHalf
  • RGFloat
  • RGHalf
  • RHalf

对于所有其他格式,SetPixels 操作都会失败。当 SetPixels 操作失败时,Unity 将抛出一个异常。

其他资源:GetPixelsSetPixels32SetPixelDataApplymipmapCount