~導入編~2015.02.27皆様初めまして。プログラマの姫野と申します。今回は、最近便利だと感じた「Unityのコルーチン」について紹介させていただこうかと思います。StartCoroutineやら、IEnumeratorやらUnity触り始めたころだとなんぞやそれは?ってなるアイツです。■どんなときに使うのかさて、弊社では毎月複数のチームに分かれてゲームを制作しております。1ヶ月で企画から完成まで持っていくにはスピードが命となります。完成度を上げるためには、ゲームシステム、演出共にきちんと動作させることが重要だと考えております。重要なのはゲームシステム部分で、これが完成していないと(当たり前ですが)ゲームとして成り立ちません。完成度以前の問題です。いって、演出も馬鹿にできませんね。中途半端に実装したりすると、「面白いかもしれないけど、何か足りない・・・」ということになりかねません。短い時間でこの両方を満たせるかどうか・・・特に演出がやっかいそうです。こんなケースはないでしょうか。ゲームリザルトとかで出てきそうな感じですね。いうのをステートマシン等で素直に実装すると、クラスや変数が増え、どうしてもコードが冗長になりがちです。冗長になるとコーディング量が多くなるし、流れが追いづらくなるしでいいことはないですよね。そもそも順番が決まっているのにややこしくなるというのは、できるだけ避けたいところです。そこでコルーチンの出番となります。(やっと出てきましたね・・・)コルーチンを使えば、順番が決まっている状態遷移をスッキリ綺麗に書くことができます。■書いてみる簡単なミニゲームの流れを例にして説明していきます。タイトルへ遷移という流れで分けられるかと思います。これをコルーチンを使ったコードに直すと以下のようになります。0;}}これだけで流れが見えてくるのではないでしょうか?通常のメソッドではStartの最初から最後まで処理が実行されてしまいますが、コルーチンを使った場合はそうはなりません。ポイントはyieldです。returnまで実行するようになっています。returnした箇所からスタートします。これを繰り返していき、最終的にはStartの最後にある「Application.LoadLevel」を呼び出し、完了となります。あとは、各演出用に分けたメソッドの省略部分を以下のように書き換えれば、演出が完了した後、次の演出へ遷移させる処理が実装できます。演出後処理いかがでしょうか。普段の処理順番とは違うのでコルーチンを読んだり書いたりしたことのない人はかなり読みづらくなってしまいますが、それに目を瞑ってもいいくらいのメリットがコルーチンにはあると思います。以上、かなり簡単にはなりますがコルーチンの導入でした。次回は、今回紹介しきれなかったコルーチンに関わる機能を紹介していきます。それではまた次回お会いしましょう。採用情報クラウドクリエイティブスタジオではプログラマを募集中でございます。ご興味があれば、以下のリンクをご覧くださいませ。