IEnumerator 在 yield return new WaitForSeconds() unity 后停止

IEnumerator stops after yield return new WaitForSeconds() unity

我有一个调用 IEnumerator 的函数,但每次我尝试 运行 它时,IEnumerator 在 yiel return new 之后立即停止。有人可以帮忙吗?它在调试中记录启动但不登录。

public void StartAnimation()
{
   StartCoroutine(ResizeText());        
}

IEnumerator ResizeText()
{        
    Debug.Log("start");
    yield return new WaitForSeconds(0.1f);
        Debug.Log("over");
}

实际上这段代码是完全有效的(考虑到协程的实现方式和工作方式,它是有意义的)。这也是有道理的,因为它是 yield return 而不是 yield break.. 所以从技术上讲,代码应该按原样工作。

我也在空白场景中试过..

首先,你正在"probably"在时间流逝之前杀死你的场景。

转载:

创建一个空白场景.. 将脚本添加到相机。添加:

void Start()
{
    StartCoroutine(meh()); //OR: StartCoroutine("meh"); //Both will work just fine..
}

private IEnumerator meh()
{
    Debug.Log("Hello");
    yield return new WaitForSeconds(2.0f);
    Debug.Log("Bye");

}

当你 运行 它时,它会打印 "Hello",然后等待 2.0 秒并打印 "Bye"..

因此,在您的场景中 missing/wrong 还有其他内容..

yield 语句之后代码不会 运行 的唯一时间是当您执行 (yield break):

private IEnumerator meh()
{
    Debug.Log("Hello");
    yield return new WaitForSeconds(2.0f);

    Debug.Log("Bye");
    yield break;

    //NOTHING here will be executed because `yield break;` is like a permanent exit of the Coroutine..

    //Therefore these statements below will NOT execute..
    Debug.Log("Reboot");
}