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

Cubemap.SetPixel

建议更改

成功!

感谢帮助我们改进 Unity 文档质量。尽管我们无法接受所有提交内容,但会阅读用户建议的每个更改并会在适用时进行更新。

关闭

提交失败

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

关闭

取消

声明

public void SetPixel(CubemapFace face, int x, int y, Color color, int mip = 0);

参数

x 要设置的像素的 x 坐标。范围为 0 至(纹理宽度 - 1)。
y 要设置的像素的 y 坐标。范围为 0 至(纹理高度 - 1)。
color 要设置的颜色。
mip 要写入到的 Mipmap 级别。范围为 0 至纹理的 Texture.mipmapCount。默认值为 0
face 要写入到的 CubemapFace

描述

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

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

Apply 是一项高开销操作,因为它会复制纹理中的所有像素,即使你只更改了部分像素也如此,因此在调用它之前尽可能多地更改像素。

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

某个面的左下角为 (0, 0)。如果像素坐标超出纹理的尺寸,Unity 会根据纹理的 TextureWrapMode 将其裁剪或重复。

如果你需要获取大块像素,则使用 SetPixels 可能会更快。

你可以使用 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

using UnityEngine;

public class Example : MonoBehaviour { public Cubemap cubeMap;

void Start() { // Set the pixel at (0,0) of the +X face red. cubeMap.SetPixel(CubemapFace.PositiveX, 0, 0, Color.red); cubeMap.Apply(); // Apply the stuff done to the Cubemap. } }