x | 要设置的像素的 x 坐标。范围为 0 到(纹理宽度 - 1)。 |
y | 要设置的像素的 y 坐标。范围为 0 到(纹理高度 - 1)。 |
color | 要设置的颜色。 |
mipLevel | 要写入的 mipmap 级别。范围为 0 到纹理的 Texture.mipmapCount。默认值为 0 。 |
设置坐标 (x
,y
) 处的像素颜色。
此方法设置 CPU 内存中纹理的像素数据。 Texture.isReadable 必须为 true
,并且必须在 SetPixel
后调用 Apply 以将更改的像素上传到 GPU。
Apply 是一个代价高昂的操作,因为它会复制纹理中的所有像素,即使您只更改了一些像素,因此在调用它之前尽可能多地更改像素。SetPixel
可能比某些其他纹理方法慢,因为它会将 Color 结构转换为纹理使用的格式。要更快地设置像素数据,请改用 SetPixelData。
左下角为 (0, 0)。如果像素坐标超出纹理的尺寸,Unity 会根据纹理的 TextureWrapMode 对其进行钳制或重复。
如果需要获取大量像素,使用 SetPixels32 可能更快。
您可以将 SetPixel
与以下 纹理格式 一起使用
对于所有其他格式,Unity 会忽略 SetPixel
。
其他资源:SetPixels、SetPixelData、GetPixel、Apply。
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { void Start() { Texture2D texture = new Texture2D(128, 128); GetComponent<Renderer>().material.mainTexture = texture;
for (int y = 0; y < texture.height; y++) { for (int x = 0; x < texture.width; x++) { Color color = ((x & y) != 0 ? Color.white : Color.gray); texture.SetPixel(x, y, color); } } texture.Apply(); } }