首页 > 解决方案 > WaitForSeconds 在“自定义”协程中不起作用

问题描述

我正在编写我自己的 CoroutineScheduler,它看起来(简化)如下:

void Start()
{
    cr = test();
}

void Update()
{
    cr.MoveNext();
}

IEnumerator test()
{
    int i = 0;

    while (true)
    {
        print(i++);
        yield return new WaitForSeconds(3);
    }
}

问题是我的函数不是每 3 秒打印一个数字,而是每帧打印一个数字。

这是因为我不使用 StartCoroutine() 还是还有其他问题?

标签: c#unity3d

解决方案


您不启动协程。要么做

IEnumerator Start() 
{
   return test();
}

或者

void Start() 
{
   StartCoroutine(test());
}

编辑:调用 cr.MoveNext() 只会将枚举数移动到下一个条目,而不应用 WaitForSeconds 逻辑


推荐阅读