Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使循环每2秒执行一次迭代并获得收益?_C#_Unity3d_Yield_Coroutine - Fatal编程技术网

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中断并等待的行