如何每X秒调用一次协程?

mat*_*hew 1 coroutine unity-game-engine

我正在尝试创建一个每 2 秒运行一次协程的类。如果它有效,它应该每 2 秒打印一次到控制台“Ran”。然而,当前版本只是打印控制台似乎每一帧。从逻辑上如何解决这个问题?

public class EveryXSeconds: MonoBehaviour
{

    public bool running = true;

    private void Update()
    {
        StartCoroutine(MyCoroutine());
    }

    IEnumerator MyCoroutine()
    {
        // Set the function as running
        running = true;

        // Do the job until running is set to false
        while (running)
        {
            // Do your code
            print("Ran");

            // wait for seconds
            yield return new WaitForSeconds(2f);
            running = false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 5

public class EveryXSeconds: MonoBehaviour{

    private void Start()
    {
        StartCoroutine(MyCoroutine());
    }

    IEnumerator MyCoroutine()
    {
        while (true)
        {
            // Do your code
            print("Ran");

            // wait for seconds
            yield return new WaitForSeconds(2f);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你写了上面的内容,它将每2秒打印一次。

  • 顺便说一句,“Start”本身可以是一个协程;)只需让它返回“IEnumerator” (2认同)