UNITY2D:麻烦 运行 来自另一个脚本的 CoRoutine

UNITY2D: Trouble running a CoRoutine from another script

我在脚本上写了一个函数,当玩家失去所有生命时激活。这会在附加到我的主要角色的脚本中调用 CoRoutine,制作一个简单的死亡动画,然后移动到游戏结束屏幕。 Debug.Log 显示函数调用,当我使用非协程函数附加到主字符时,那些函数调用到。但是,协程本身从不调用,甚至不显示它曾经激活的日志?有人知道怎么回事吗?

代码如下:

if (GameObject.Find("Heart 1") == null)
        {
            Debug.Log("Naw");
            player.DeathAnimation(20);
            Debug.Log("still not working");
        }


public IEnumerator DeathAnimation(int i)
    {
        int k = i;
        Debug.Log("Numerator works");
        transform.Rotate(Vector3.forward * 9);
        yield return new WaitForSeconds(.08f);
        k--;
        Debug.Log(k);
        if (k <= 0)
        {
            SceneManager.LoadScene("Game Over");
            yield break;
        }
        StartCoroutine(DeathAnimation(k));
    }

似乎没有理由将其设为递归协程。我建议删除递归,这也可能解决您遇到的问题或至少使其更容易识别。

    if (GameObject.Find("Heart 1") == null)
    {
        Debug.Log("Hmm");
        StartCoroutine( player.DeathAnimation(20) );
        Debug.Log("maybe working");
    }

public IEnumerator DeathAnimation(int i)
{
    Debug.Log("Numerator works");
    for( ; i>0; i-- ) {
        transform.Rotate(Vector3.forward * 9);
        yield return new WaitForSeconds(.08f);
        Debug.Log(i);
    }
    SceneManager.LoadScene("Game Over");
}