ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

コルーチン

コルーチン - 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関数で指定する。
これは便利だ。いちいち最初のフレームかを判定するフラグを持たなくても良いし、コードとしても読みやすくなる。