WaitForSeconds无法在“自定义”协程中工作

时间:2019-03-28 12:29:38

标签: c# unity3d

iam编写我自己的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()还是存在其他问题?

1 个答案:

答案 0 :(得分:1)

您不启动协程。要么

IEnumerator Start() 
{
   return test();
}

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

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