公開日:2023/05/04  更新日:2023/05/04

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()の中身がこれまでと同様に処理される。
UnityのC#の基礎まとめへ戻る

page top