コルーチン - Unity マニュアル
指定した関数内の途中で抜けて、再開するときは続きから実行できるというもの。
たとえば最初の1回目は初期化処理を行い、あと毎フレーム実行するというものが、フラグ判定等をしなくても簡単に書くことができる。
void Start () { StartCoroutine("CoRoutine"); } IEnumerator CoRoutine() { Debug.Log("First"); yield return null; int i = 0; while(true) { Debug.Log(i++); yield return null; } }
コルーチンとして呼び出す関数はIEnumeratorを戻り値として定義し、関数を抜けるときはyield returnと記述する。次回呼び出されるときはそのreturnの続きからとなる。
yield returnの戻り値がnullの場合は次のフレームで続きから実行される。戻り値を WaitForSeconds関数にすれば指定した秒数で戻ってくるようにできる。例えば0.1秒後に再開する場合は次の通り。
yield return new WaitForSeconds(0.1f);
定義した関数は StartCoroutine関数で指定する。
これは便利だ。いちいち最初のフレームかを判定するフラグを持たなくても良いし、コードとしても読みやすくなる。