我对纹理操作非常陌生,所以请原谅我对此过于天真。 我希望当玩家单击像素颜色时,它会将与单击像素颜色相同的所有像素更改为颜色
green
。我搞乱了 Texture2D.GetPixel
和 Texture2D.SetPixel
,但我所做的只是更改特定区域上的特定单个像素:
if (Input.GetMouseButtonDown(0))
{
mColor = mTexture.GetPixel(0,0);
mTexture.SetPixel(0, 0, Color.green);
mTexture.Apply();
}
有没有办法可以将与单击像素颜色相同的所有像素更改为颜色
green
?
要获取纹理的所有像素,请使用
GetPixels
。获得像素数组后,循环遍历所有像素并将像素(颜色)与比较颜色进行比较。如果它们匹配,则将像素更改为绿色。完成对像素数组的所有修改后,使用 SetPixels
将像素分配回纹理。
Texture2D texture = myTextureReference;
Color[] pixels = texture.GetPixels(0, 0, texture.width, texture.height, 0);
for (int i = 0; i < pixels.Length; i++)
{
if (pixels[i] == myComparisonColor)
{
pixels[i] = Color.green;
}
}
texture.SetPixels(0, 0, texture.width, texture.height, pixels, 0);
texture.Apply();