在Unity3d中连续两次调用同一个协同程序的问题

时间:2016-04-22 13:19:31

标签: c# unity3d coroutine

我正在尝试使用Coroutines旋转魔方的平面,这是我的代码:

IEnumerator RotateUpperFacecw(){
    while(Mathf.Abs(totalRotation) < 90f){
        totalRotation += 10;
        Parent.transform.RotateAround(red.transform.position,Vector3.up,10);
        yield return 0;
    }

    if(Mathf.Abs(totalRotation)>=90f){
        totalRotation=0;
        Update(UpperFace);
    }
}

然而,当我尝试连续两次调用协程时,就像这样

StartCoroutine(RotateUpperFacecw());
StartCoroutine(RotateUpperFacecw());

它给出了错误的结果。

我试着调用第一个,等待一秒然后再次调用它很好,但是我没有得到它,不应该(yield return 0)阻止执行直到这个协程结束?

我错过了什么?

2 个答案:

答案 0 :(得分:2)

yield return 0yield return false相同,并等待一个框架

答案 1 :(得分:0)

第二个协程调用不会等待第一个完成,在某个时刻它们将同时运行,两个都试图旋转对象。你可以在第一次调用中第二次调用,但是你需要一个布尔值或者某些东西来避免无限期调用。