Я работаю над игрой, которая будет содержать мозаичную карту 1000 x 1000 в форме квадрата, но у меня возникли проблемы.
Я попытался сделать два разных сценария, чтобы решить эту проблему.Первым был небрежный подход к тому, что мне нужно.Мой второй скрипт - более эффективный подход к тому, что мне нужно.
Скрипт 1:
void fill()
{
for (float i = 0; i != 1000; i++)
{
Instantiate(GameObject.Find("Dirt"), new Vector2(xPos++, yPos), Quaternion.identity);
xrepeat++;
if (xrepeat == 1000)
{
xPos = 0;
yPos = yPos - 1;
yrepeat++;
if(yrepeat != 1000)
{
i = 0;
xPos = 0;
}
if(xPos < 0) //Prevents an overflow.
{
break;
}
}
}
Скрипт 2:
void buildx()
{
for (int i = 1000; i != 0; i--)
{
Instantiate(GameObject.Find("Dirt"), new Vector2(xPos++, yPos), Quaternion.identity);
if (xPos == 1000)
{
buildy();
}
}
}
void buildy()
{
if (yPos == -1000)
{
Destroy(this); // Job is done, time to pack up
}
else
{
for (int i = 1000; i != 0; i--)
{
Instantiate(GameObject.Find("Dirt"), new Vector2(xPos, yPos--), Quaternion.identity);
buildx();
}
}
}
Первый скрипт дублировал мой блок грязиЗатем 1000 раз вычтите ось y на 1 и повторяйте, пока она не достигнет квоты.Это работало, но к концу работы сдалось.Второй сценарий пинг-понг назад и вперед между осями x и y, проверяя квоту 1000, но по какой-то причине он застыл.
Я в значительной степени отказался от сценария 1 в пользу сценария 2, потому что я думал, что сценарий 2 был болееэффективный.
Есть ли способ заставить скрипт 2 работать?