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");
}
我在脚本上写了一个函数,当玩家失去所有生命时激活。这会在附加到我的主要角色的脚本中调用 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");
}