我要做的是检查完美像素切割,其中2个纹理具有黑色边缘,例如:这个纹理中的一个是圆形,第二个可以是三角形或矩形。
这是我的代码,它只给出了我需要的坐标颜色数组
Color[] playerColorArray = new Color[texturePlayer.Width * texturePlayer.Height];
Color[] secondColorArray = new Color[secondTexture.Width * sencondTexture.Height];
texturePlayer.GetData(playerColorArray);
secondTexture.GetData(secondTextureArray);
我的问题是如何从Texture2D获取每个像素的坐标,这个像素在这个Texture2D中是黑色的。
感谢提前:)
答案 0 :(得分:4)
您已经拥有了一系列颜色,因此您只需要根据数组中的像素确定每个2D的坐标。
在Riemers tutorial(我推荐)中的,就是这样做的:
Color[,] colors2D = new Color[texture.Width, texture.Height];
for (int x = 0; x < texture.Width; x++)
{
for (int y = 0; y < texture.Height; y++)
{
colors2D[x, y] = colors1D[x + y * texture.Width];
}
}
答案 1 :(得分:1)
我个人更喜欢写扩展方法:
public static class Texture2dHelper
{
public static Color GetPixel(this Color[] colors, int x, int y, int width)
{
return colors[x + (y * width)];
}
public static Color[] GetPixels(this Texture2D texture)
{
Color[] colors1D = new Color[texture.Width * texture.Height];
texture.GetData<Color>(colors1D);
return colors1D;
}
}