Unityのコルーチンとは?使い方について
Unityのコルーチンとは処理の待機や再開を行える関数だ。この記事を読む前に、C#でのスクリプトの開き方、基本的な構文の作り方、変数、演算子がわからない場合は先に以下の記事で確認してほしい。
UnityのC#の書き方
UnityのC#の変数・演算子
Transform基礎
コルーチンは重要度の高い関数だ。例えば技を使った後のクールタイムを設定したいという場合や、連続でジャンプやダッシュなどをさせたくない場合などは、コルーチンで一定時間後に処理を行うことで実現が可能だ。詳しく紹介していく。
コルーチンの使い方目次
コルーチンの基本コルーチンの終了
中にコルーチンを入れる
目次にもどる
コルーチンの基本
コルーチンの基本の使い方を紹介していく。実際に使ってみる。まず、Cubeを作成しよう。
そして以下のスクリプトを作成してCubeにアタッチして再生してほしい。CubeがZ軸方向へ2秒後に5移動、更に2秒後に-5移動、更に2秒後に5移動する。
まずStartメソッドでStartCoroutine(taiki());と記述している。taikiと言う名前のコルーチンを開始することができる。
IEnumerator taiki()と記述しコルーチンのメソッドを作っている。
yield return new WaitForSeconds(2);と記述することで2秒間の待機ができる。
よって2秒後にその下に記述されている処理であるthis.transform.Translate(0.0f, 0.0f, 5f);でCubeの移動が行われることになる。
その後も待機2秒→移動処理→待機2秒→移動処理のように同様に記述している。
今回はyield return new WaitForSeconds(2);と記述し、秒数での待機を行った。
yield return null;と記述すれば1フレーム待機することもできる。
StartメソッドをIEnumerator Start()と書き換えればStartメソッドをコルーチン化することもできる。
目次にもどる
コルーチンの終了
コルーチンはyield breakと記述することで終了させることが可能。前のスクリプトに以下のようにyield breakを加えて再生してみよう。
IEnumerator taiki()の中で、待機→処理→待機→処理と記述した後にyield break;と記述。これにより最後の待機や処理は行われずコルーチンが終了する。
目次にもどる
中にコルーチンを入れる
コルーチンの中にコルーチンを入れることができる。。以下のスクリプトをCubeにアタッチして再生してみよう。
IEnumerator taiki()の中で、待機→処理→待機→処理と記述した後にStartCoroutine(taiki2());と記述。これによりIEnumerator taiki2()の中身がこれまでと同様に処理される。