2个类似的递归IEnumerator的行为很奇怪

时间:2019-01-07 13:40:18

标签: c# unity3d

我有一个像这样的递归IEnumerator

IEnumerator Spawn()
{
    if(canSpawn)
    {               
        Vector3 offset = new Vector3(example.transform.position.x + offsetVar, example.transform.position.y, example.transform.position.z);
        Instantiate(someObject, offset,Quaternion.identity);
        canSpawn = false;
        yield return new WaitForSeconds(cooldown);
        canSpawn = true;
        StartCoroutine(Spawn());
    }        
}

然后我在GameObject.FindGameObjectWithTag(string s)方法中使用Start()来定位example游戏对象。我将这个IEnumerator的副本称为IEnumerator一次,只是它具有不同的变量。它可以按预期工作,但是此IEnumerator实例化的对象与另一个实例之间的距离越来越小,直到它们都在同一位置实例化为止。这里可能是什么问题?

1 个答案:

答案 0 :(得分:1)

这是因为我在一个方法中同时启动了两个协程,而我却在Update()方法中调用了该方法。现在,我只调用它们一次,就不会发生此问题。