嘿家伙,我认为这将是一个1秒的事情要做,目前我有一个2D游戏的瓷砖,并根据它称为这些瓷砖集的地形。并且瓦片集是颜色编码的粉红色是材料而蓝色是与瓦片相邻的材料。XNA改变200左右瓷砖像素
到目前为止,当地形发生变化或加载时,我会在屏幕上绘制瓦片,并在移动时绘制任何新的瓦片。这一切都很好,工作得很好,但是当我有50个草地砖需要从粉红色变为绿色和75个需要从粉红色变成灰色的灰色砖时,我有一个问题。
它只出现第一个瓷砖被改变,然后每个其他瓷砖前面或之前,瓷砖是第一种颜色相同的颜色。
我给你一个例子,代码什么IM做
Color[] storePixels = new Color[50 * 50];
for(int y = 0; y < 100; y ++)
{
for(int x = 0; x < 100; x++)
{
tileTexture[y,x].GetData(storePixels);
for(int i = 0; i < storePixels.Length; i ++)
{
if(tileMaterial[y,x] == "DIRT")
{
storePixels[i] = new Color(100,100,100);
}
if(tileMaterial[y,x] == "GRASS")
{
storePixels[i] = new Color(0,255,0);
}
}
tileTexture[y,x].SetData(storePixels);
}
}
给我,我不能明白为什么这不会工作。我假设也许我需要重置storePixels,我已经尝试过,但如果它的草或灰色,如果它的污垢仍然不创建绿色。
请让我知道如果你知道这是为什么不工作感谢您的时间,谢谢你提前:)
OK!我理解了它的IM调用相同的图像在我的内容文件夹
for(int y = 0; y < 100; y ++)
{
for(int x = 0; x < 100; x ++)
{
tileTexture[y,x] = Content.Load<Texture2D>("tile");
}
}
所以现在我们正在somewere我们知道为什么我走过的SetData(改的Texture2D问题被cuassed),它实际上直接改变这种瓷砖的Texture2D其他所有调用它的东西都会改变。
我不能在循环中调用它,我只在启动时调用它,我可以尝试存储texture2D的副本,然后更改它。
我不知道有没有人有任何进一步的解决方案来帮助解决这个问题?感谢您的时间:)
绘图代码绘制每个texture2D在y,x数组中例如for(int y = 0; y <100; (int x = 0; x <100; x ++){spriteBatch.Draw(tileTexture [y,x],rectangle,Color.White); – user1109013 2012-04-03 03:37:54
我尝试使用特定的storePixel颜色为每个texture2D,输出我接收例如我告诉它只绘制和更改瓷砖0,0,但它随机更改4,4 5,9 8,1 1,1和70%每次随机的其他瓷砖。我花了整整一天24试图修复这个没有成功,即时通讯思维即时通讯或者失去了一些东西或XNA不能绘制大量的瓷砖网格 – user1109013 2012-04-03 03:45:14