递归生成器实例化太多游戏对象的方式

时间:2019-05-10 23:25:26

标签: unity3d

我正在尝试创建一个递归函数,该函数将在最大值和最小值之间的随机时间间隔实例化一只鸟,然后调用自身,以便该过程重新开始,并且在另一只随机鸟之后将实例化一只新鸟间隔。问题在于,当前在第一个随机间隔过去之后,立即实例化了无限(接近)数量的鸟。但是我看不到哪里出了问题。 SpawnBird()已经过测试,仅在单独调用一只鸟时才会实例化。

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

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

1 个答案:

答案 0 :(得分:0)

我最终将它变成了协程,现在可以使用了。

IEnumerator BirdGenerator()
{
    while(true)
    {
        float timer = Random.Range(minBirdWait, maxBirdWait);
        yield return new WaitForSeconds(timer);
        SpawnBird();
    }
}