Coroutineの使用方法と動作について
Coroutine使用法
コルーチンはコルーチンとして開始した関数内で処理を一旦停止、フレーム単位で停止後(または指定時間後)処理を再開できる機能。
別スレッドので処理を走らせられる(かのような)感。(実際にはマルチスレッドな訳ではない)
関数内で
- 処理A
- 指定時間待機
- 処理B
- 指定時間待機
- 処理C
と言った一連の処理を記述できる。
処理間で待機が入っても、同一関数の処理なので、別途メンバ変数等によるState管理をしなくても、スタック変数で状態を保持できる。
また、時間のかかる処理を行う場合に「関数A->関数B->関数C->関数A」といった形で疑似的に並列処理を行える(懐かしのTSS)。
private IEnumerator _honyaHonyaCoroutine = default; void Start() { _honyaHonyaCoroutine = CoHonyaHonya(); StartCoroutine(_honyaHonyaCoroutine); } private IEnumerator CoHonyaHonya() { // 処理A yield return null; // 処理B yield return new WaitForSconds(3.0f); // 処理C yield return null; // 処理D }
上記のようにIEnumerator型の関数を定義し、StartCoroutineの引数として渡してやることでコルーチンがスタートする。
コルーチンでは、
処理A->1frame待機->処理B->3秒待機->処理C->1frame待機->処理D->終了
という動作を行う。
StopCoroutine等についてはまた別途追記予定。