ゆるっとゲーム制作 - ステート管理1

明けましておめでとうございます!久々の投稿です。

 

最近仕事ではUnityを使うことが多いんですが、年末年始に個人的にアセットを色々と買って試したりしたのでいくつか記事にしようかと思っています。Unityは便利なアセットがたくさんあるので、なるべくアセットに頼って少ない労力でゲームを作るのを目標にします。続けられるかわかりませんが、ゆるゆるとやっていきましょう〜!

 

さて、ゲームを作るにあたりどこから始めるかというところなんですが、何を作るにせよまず骨格を決めていきましょう。Arborというアセットを使ってみます。

assetstore.unity.com

 

ゲームはタイトルから始まって、ステージ選択、ステージ、、みたいに場面が切り替わっていくわけなんですが、それら一つ一つを「ステート」として管理して遷移をビジュアライズできるのがこのアセットです。似たようなものにPlayMakerなんてアセットもありますが、Arborの方がステート管理に特化してシンプルなイメージです。

 

Arborにはステート管理以外にも、ビヘイビアツリーというNPCのAIを組むのに使えそうな機能や、データフローというデータの受け渡しをGUIで組めるような機能があるんですが、これらは一旦置いておきます。これらは場合によっては便利かもと思いつつ、スクリプトで書いた方が楽かもな〜と思うところはあります。

 

動作は以下のような感じ。

ステートのフローをGUIで組んだ後、実行すると、各ステートにアタッチしたスクリプトに定義されたイベント関数(OnStateBegin, OnStateEnd等)が呼ばれるようになってます。

f:id:tota66:20220108184017g:plain

Arbor Editor 動作の様子

あー遷移してるな、というのが目でわかります。遷移の組み替えは繋ぎ先を変えればいいので楽にできそうですね。まあでも、これを使うことの一番の利点はステートごとに処理を記述するという骨格ができ、後々のコードの書き方が整理されることかなと思います。

 

ちなみにこのステートたちはそれぞれ子にサブステートを持つことができ、要は木のような構造をとれます。この辺の機能もあるのが便利なところです(自前でこの辺の仕組みまで作ろうとするとちょっと面倒そうですし)。この辺りの話やもうちょい具体的な使い方などについてはまた別の機会に紹介しようかなと思います。では〜