Эй, ребята, я думал, что это будет 1 секунда, в настоящее время у меня есть набор плиток для 2d игры и в зависимости от местности, которую он называет этими наборами плиток.и наборы плиток имеют цветовую кодировку: розовый - это материал, а синий - это материал, примыкающий к плитке.
Пока что при изменении ландшафта или при загрузке я рисую плитки на экране и любые новые плитки по мере движения,это все хорошо и работает очень хорошо, но когда у меня есть около 50 плиток травы, которые нужно изменить с розового на зеленый, и 75 плиток грязи, которые нужно изменить с розового на серый, у меня возникает проблема.
это только кажется, что первая плитка изменена, затем каждая другая плитка перед или до того, как эта плитка будет того же цвета, что и первый цвет.
плохо приведу пример кода, что я делаю
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, которые я пробовал, но все равно он не создает зеленый цвет, если его трава или серый цвет, если он грязный.
Пожалуйста, дайте мне знать, если вы знаете, почему это не работает, спасибо заВаше время и заранее спасибо :))
ОК!я понял, что я вызываю одно и то же изображение в моей папке с содержимым
for(int y = 0; y < 100; y ++)
{
for(int x = 0; x < 100; x ++)
{
tileTexture[y,x] = Content.Load<Texture2D>("tile");
}
}
, так что теперь мы узнаем, почему мы решаем проблему, когда я меняю Texture2D через SetData (), это фактически меняет эту плиткуТекстура напрямую и все, что ее вызывает, всегда будут изменены.
Я не могу вызвать ее в цикле, я вызываю ее только при запуске, я могу попытаться сохранить копию texture2D и затем изменить ее.
я не знаю, есть ли у кого-нибудь еще решения, чтобы помочь решить эту проблему?спасибо за ваше время :) 1021 *