【发布时间】:2019-09-30 17:46:56
【问题描述】:
我有一张图片(附加),我将其用作测试。我正在尝试获取并将每个像素的所有颜色存储在一个数组中。
我使用下面的代码来做到这一点;
Texture2D tex = mapImage.mainTexture as Texture2D;
int w = tex.width;
int h = tex.height;
Vector4[,] vals = new Vector4[w, h];
Color[] cols = tex.GetPixels();
for (int y = 0; y < h; y++)
{
for (int x = 0; x < w; x++)
{
if(cols[y+x] != Color.black)
{
Debug.Break();
}
vals[x, y] = cols[(y + x)];
}
}
其中 mapImage 是一个公共材质变量,我将其拖入预制件的场景中。如您所见,我在那里添加了一个调试测试,以在达到非黑色时暂停编辑器。这永远不会受到打击。
有趣的是,我有另一个脚本运行并告诉我点击位置的颜色值 (GetPixel()) 使用相同的图像。它工作正常(不同的方法,但最终都使用相同的材料)
我不知道为什么 GetPixels() 总是变黑?
我也一直在考虑将图像数据加载到字节数组中,然后将值解析为 Vector4,但希望这最终能奏效。
【问题讨论】:
标签: c# image unity3d image-processing image-manipulation