将Texture2D上的特定颜色更改为另一种颜色

问题描述 投票:0回答:1

我对纹理操作非常陌生,所以请原谅我对此过于天真。 我希望当玩家单击像素颜色时,它会将与单击像素颜色相同的所有像素更改为颜色

green
。我搞乱了
Texture2D.GetPixel
Texture2D.SetPixel
,但我所做的只是更改特定区域上的特定单个像素:

if (Input.GetMouseButtonDown(0))
{
    mColor = mTexture.GetPixel(0,0);
    mTexture.SetPixel(0, 0, Color.green);
    mTexture.Apply();
}

有没有办法可以将与单击像素颜色相同的所有像素更改为颜色

green

c# unity-game-engine 2d sprite
1个回答
0
投票

要获取纹理的所有像素,请使用

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();
© www.soinside.com 2019 - 2024. All rights reserved.