夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Unity コルーチンで別の処理が終わるまで現在の処理を停止させる

本日はUnity枠です。

Unityではコルーチンを使用することで処理を遅らせることができます。

例えば次のような処理では1秒ごとの何か処理を行うことができます

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

    IEnumerator Time()
    {

        for (int i = 0; i < 10; i++)
        {
         
            yield return new WaitForSeconds(1);
            //Do Something
            Debug.Log(i);
        }
        
    }

yield returnに続き待機処理を記述することで処理を停止することができますが、今回は別の処理の情報を取得してその処理が終わるまで待機するという使い方を見ていきます。

〇WaitUntile

WaitUntileは引数として指定したBool内がTrueになるまで処理を停止させます。

例えば次のように記述する場合はbool waitがfalseの間は処理が停止します。

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

    
    IEnumerator Time()
    {
        yield return new WaitUntil(() =>wait );
        Debug.Log("waitEnd");
    }

例えばマルチプレイなどで別のプレイヤーの処理を待つ際などに使用できます。

本日は簡単でしたが以上です。