嘿傢伙,我認爲這將是一個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