版本:Unity 6 (6000.0)
语言简体中文
  • C#

Texture3D.SetPixel

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

切换至手册

声明

public void SetPixel(int x, int y, int z, 颜色 color, int mipLevel = 0);

参数

x 要设置像素的 x 坐标。范围是 0 到 (纹理宽度 - 1)。
y 要设置像素的 y 坐标。范围是 0 到 (纹理高度 - 1)。
z 要设置像素的 z 坐标。范围是 0 到 (纹理深度 - 1)。
颜色 要设置的颜色。
mipLevel 写入的目标多级纹理级别。范围是 0 到纹理的 Texture.mipmapCount。默认值为 0

描述

设置坐标 (x, y, z) 的像素颜色。

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

应用 是一项高成本的操作,因为它会复制纹理中的所有像素,即使你仅更改了其中一些像素,所以在调用它之前尽可能多地更改像素。

SetPixel 可能会比其它某些纹理方法更慢,因为它会将 颜色 结构转换为纹理所使用的格式。若要更快速地设置像素数据,请使用 SetPixelData

左下角为 (0, 0, 0)。如果像素坐标超出了纹理的维度,则 Unity 会根据纹理的 纹理循环模式 对其进行截取或重复。

如果你需要获取一大块像素,那么使用 SetPixels32 可能会更快。

你可以对以下 纹理格式 使用 SetPixel

  • 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

对于所有其他格式,Unity 会忽略 SetPixel

其他资源:SetPixelsSetPixelDataGetPixelApply