スマホアプリ「あ〜ちゃ〜の大冒険」(2014年12月下旬リリース予定)は、実験的にPlayMakerというコーディング無しで処理を記述できるアセットを全面的に利用して作りました。
そこで実際にPlayMakerを使ってどのように処理を記述しているかを公開します。
PlayMaker自体の詳細に関しては、公式の紹介動画・チュートリアル動画で概要は掴んで頂けると思います。
また少ないながらも日本語で解説されているサイトもありますのでそちらを参照して下さい。
初回は、小手調べということでアプリのタイトル画面の初期化を管理しているFSM(PlayMakerの処理内容を記述したもの)をご紹介します。
○ TitleController
ここでは広告の初期化、またアプリ内で唯一となる音源を管理するゲームオブジェクトAudioManagerを作成しBGMを再生します。
1. Init
シーンが読込まれPlayMakerFSMが動き出した時に初めに到達する状態(ステート)です。
1-1. Init Ad Banner(カスタム)
自分で作成したカスタムアクションでiOS/Androidそれぞれのネイティブプラグインを呼び出し、広告バナーの初期化・表示を行います。
カスタムアクションに関しては下記を参考にして下さい。
1-2. Find Game Object(GameObjectカテゴリ)←括弧内はPlayMakerで用意されたアクションのカテゴリを示します。
「AudioManager」というタグが付けられたGameObjectを取得し、変数audioManagerにセットします。
存在しなければnullになります。
1-3. Game Object Is Null(Logic)
audioManagerがnullかどうかを調べます。
nullの場合は「NO_AUDIO_MANAGER」というイベントを発生し遷移、nullでない場合は通常終了し「FINISHED」イベントによる遷移を行います。
2. CreateAudioManager
InitでAudioManagerが存在しなかった場合に到達するステートです。
このステートでは特に遷移イベントを指定していませんが、その場合は全てのアクション実行後に自動的にFINISHEDイベントによる遷移が行われます。
2-1. Create Object(GameObject)
インスペクタで指定してあるAudioManagerのプレファブからインスタンスを作成し、変数audioManagerにセットします。
2-2. Dont Destroy On Load(Level)
audioManagerがシーンロード時に破棄されないように設定します。
3. PlayTitleBGM
タイトル画面のBGMを再生します。
3-1. Play Title BGM(カスタム)
AudioManagerの機能を利用してタイトル画面のBGMを再生するカスタムアクションです。
ーーーーー
状態(ステート)が3つ、それぞれのアクションも少ないですが、PlayMakerによる実装の感じは掴んで頂けたと思います。
状態遷移というよりは処理の固まりを遷移していくようなイメージになっているのは私のクセという部分もあります。
変数がFSM単位で用意され、スクリプトでいうところのメソッドのローカル変数のようなものが存在しないのが特徴と言えます。
また条件分岐の場合には必ず状態遷移を引き起こすというのもクセのあるところです。
今回、これだけ少ないアクションの中で2ヶ所もカスタムアクションが登場しましたが、少し込み入ったことをしようと思うとカスタムアクションを作成した方が楽です。
PlayMaker標準でMonoBehaviourのメソッドを呼び出すアクションが存在しますが、上手く利用出来ませんでした。
次回はタイトル画面でスタートボタンを押した時のFSMを紹介する予定です。