C# 如何使循环每2秒执行一次迭代并获得收益?
无法理解协同程序工作的逻辑。在我的示例中,正如我所理解的,循环必须每两秒钟执行一次迭代,但在启动程序后,它会等待两秒钟并执行整个循环 我不明白,怎么了C# 如何使循环每2秒执行一次迭代并获得收益?,c#,unity3d,yield,coroutine,C#,Unity3d,Yield,Coroutine,无法理解协同程序工作的逻辑。在我的示例中,正如我所理解的,循环必须每两秒钟执行一次迭代,但在启动程序后,它会等待两秒钟并执行整个循环 我不明白,怎么了 void Start () { StartCoroutine ("MyCoroutine"); } IEnumerator MyCoroutine() { yield return new WaitForSeconds(2.0f); for (
void Start ()
{
StartCoroutine ("MyCoroutine");
}
IEnumerator MyCoroutine()
{
yield return new WaitForSeconds(2.0f);
for (int i = 0; i < 5; i++)
{
Debug.Log(i); // It must execute ont time per 2 seconds?
yield return null;
}
}
void Start()
{
开始例行程序(“MyCoroutine”);
}
IEnumerator MyCoroutine()
{
收益率返回新的WaitForSeconds(2.0f);
对于(int i=0;i<5;i++)
{
Debug.Log(i);//它必须每2秒执行一次?
收益返回空;
}
}
在循环的每一步中,您都应该放弃等待:
IEnumerator MyCoroutine()
{
for (int i = 0; i < 5; i++)
{
Debug.Log(i); // before waiting
yield return new WaitForSeconds(2.0f);
// after waiting
}
}
IEnumerator MyCoroutine()
{
对于(int i=0;i<5;i++)
{
Debug.Log(i);//等待前
收益率返回新的WaitForSeconds(2.0f);
//等待之后
}
}
我理解WaitForSeconds是如何工作的,但我想知道,收益率返回null的原因是什么;需要在循环中返回null等待1个游戏帧。因此,如果将yield return null放入循环中,它将每帧执行一次。您需要将yield waitforseconds放入循环中,这是unity中断并等待的行