Unity+UnrealEngine4+Blog.

UnityやUnrealEngine4とかについて学習したことを書いてます

Unity コルーチンを使ったゲーム進行管理

コルーチンを使ったゲーム進行管理の記事です。

Playerに確実に決まったステップを踏んでほしいイベント時に使えるかもしれません。

enumと組み合わせるとさらに使いやすくなります。使うメリットとしては、一連の流れを順を追って記述していくので流れが一目瞭然なのと、確実に順番通りにPlayerに用意したステップを踏んでもらうコンテンツ作成が簡単になります。

 

コルーチンとは ↓

doruby.jp

 

コルーチンは個人的にけっこう使います。

例えば関数をコルーチンにして下のようにプログラムを書いたとして、

 

コルーチン↓

private IEnumerator ほにゃ()

{

 1行目 ほにゃらら・・

 yield return null;

 

 2行目 ほにゃらら・・

 yield return null;

 

 3行目 ほにゃらら・・

 yield return new WaitForSecond(5.0f);

 

 4行目 ほにゃらら・・

 

 

上記の場合、

1行目を実行したら、1フレーム後に2行目が実行され、

さらにその1フレーム後に3行目が実行され、

次は5秒後に4行目のプログラムが実行されるようになります。

 

このようにプログラムの呼び出しタイミングの調整をすることができます。

 

yield return ~のない普通の関数の実行なら

1行目から4行目まで同じフレームで一気に実行されてしまいます。

 

コルーチンの書き方例を書いてみました。実際に書いて、実行してみると理解が進みやすいです。

 イベントの進行管理っぽいやつです。

 

 

 以下はこれを実行したコンソールです。

経過時間も見るとわかりやすいです。

 

 プレイスタート時

f:id:nabesi777:20200625143305p:plain

 

 三秒後に実行

f:id:nabesi777:20200625143314p:plain

 

 Enterをおしたら次のプログラムが実行(上記コードのコメントアウトのAは間違い)

f:id:nabesi777:20200625143349p:plain

 

 Bを押して、EnemyNumberを1にしたら、次のプログラムを実行

(上記コードのコメントアウトが少し間違ってます。EnemyNumberが0以上じゃなくて、EnemyNumber !=0になったら次のプログラムが実行されます)

f:id:nabesi777:20200625143408p:plain

 

 

すぐに使わなくても、コルーチンとかいうやつで実行タイミングをずらすことができるということだけでも覚えておくと、後々なにかの役に立つかもしれません。