Рекурсивное создание экземпляров слишком большого количества игровых объектов - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь создать рекурсивную функцию, которая будет создавать экземпляр птицы с произвольным интервалом времени между минимальным и максимальным значением, а затем вызывать себя так, чтобы процесс начинался заново, а новая птица создавалась после другой случайной выборки. интервал. Проблема состоит в том, что в настоящее время после первого случайного интервала происходит одновременное создание бесконечного (близкого) числа птиц. Но я не вижу, где я ошибся. SpawnBird () был протестирован и создает только одну птицу, когда вызывается сам по себе.

void Start()
{
    minBirdWait = 10;
    maxBirdWait = 25;
    BirdGenerator();
}

void BirdGenerator()
{
    float timer = Random.Range(minBirdWait, maxBirdWait);
    Invoke("SpawnBird", timer);
    BirdGenerator();
}

1 Ответ

0 голосов
/ 11 мая 2019

В итоге я превратил его в сопрограмму, и теперь она работает.

IEnumerator BirdGenerator()
{
    while(true)
    {
        float timer = Random.Range(minBirdWait, maxBirdWait);
        yield return new WaitForSeconds(timer);
        SpawnBird();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...