【unity】コルーチンで処理を一時中断する【任意の時間・条件を満たすまで処理を止める】

本記事では『コルーチン』の使い方について簡単に解説していきます。

スポンサーリンク



コルーチンとは

コルーチンとは処理を一時的に中断させることができるunity機能のことです。

初めは「時間経過」や「特定の条件」を指定し、それらが満たされたら処理を再開させるといった捉え方をすれば良いかと思います。

【使用例】

・敵キャラが攻撃モーションに入っている間、攻撃エフェクトが終わるまでそれ以外の行動をさせない

・キャラ同士の会話が終わるまで動けないようにする

注意MonoBehaviourクラスを継承しているクラスでなければコルーチンを使うことはできない。

 

コルーチンで〇秒間次の処理まで中断させる

まずはシンプルに任意の時間を処理を待機させる方法を解説します。

下は「1フレームと5秒間処理を待機させる」コードになります。

 

簡単に上のコードの解説をしていきます。

4行目:StartCoroutine(“実行したいメソッド名”);

コルーチンを実行する。

※実行したいメソッドを”文字列”で記述する。

 

7行目:IEnumerator Test()

コルーチンの処理は『IEnumerator』のデータ型で書く。

※戻り値(yield return)を指定しないと「 値を返さないコード パスがあります」というエラーが生じる。

 

10行目:yield return null;

戻り値に「null」を指定すると処理を1フレーム待機させることができる。

 

14行目:yield return new WaitForSeconds(5);

戻り値に「new WaitForSeconds(秒数)」を指定すると、その秒数分を処理を待機させることができる。

 

コルーチンで条件を満たすまで処理を待機させる

次に下のコードは「Spaceキーを押すまで処理を中断する」という内容になっています。

9行目:yield return new WaitUntil(() => 条件);

指定した条件がTrueになるまでコルーチンの実行を中断する。

※「WaitUntil」はYield ステートメントでのみ使用できる。

 

スポンサーリンク