書こう書こうと思っていたArbor2の備忘録を書いていきます。
やろうとすること
凄いざっくりですが、以下の事をやろうと思います。
- ゲームにとあるキャラ(今回は猫としてます)が登場したら、ボタンが表示される
- ボタンをタップしたら、GameManagerクラス等でイベントキャッチと非表示処理
はじめに
インストール等、Arbor2って?と言うところは以下の公式を参照してください。
また、今回は絶賛開発中のゲームから抜粋してきているので、名前の付け方等、所々「?」となるかもですがご容赦ください。
Hierarchyを準備する。
今回はuGUIを使います。なので、Canvasに、以下の構成でぶら下げます。
Canvasは空のオブジェクトです。
Matatabiというのは、今回のゲームは「またたびボタン」としたいので、その名前をおいています。Matatabi自体はCanvasです。
MatatabiButtonが今回、非表示/表示処理を行いたい対象で、Buttonを置いてます。
Matatabi(Canvas)の作業
Matatabiには、MatatabiButtonの表示/非表示処理を担ってもらいます。
MatatabiのInspectorに以下のComponentを追加します。
Arborの状態遷移を追加しています。
Open Editorで状態遷移を開きます。
ここで以下のような遷移を作成しています。
上記状態について一つずつ説明していきます。
ArborCatStateStageIn
これ自前で用意したものです。
猫が登場したらまたたびボタンを表示すると言う事を行いたい為、Catオブジェクトの状態をチェックし、Catオブジェクトのステータスが茂みに登場したら次の「またたびボタン表示」状態へ遷移させます。
実際にArborCatStateStageInは以下の処理を行ってます。
if (_Cat.CurrentState == Cat.CatState.Stay_StageIn) {
で、Catオブジェクトの現在の状態を監視している簡単なScriptです。
これで保存すると、Arbor2上では以下の挙動が追加されてます。
(初めてこれを見た時、Arborすげええええええ!!!ってなった
後は、上記からArborCatStateStageInを選択し、Catオブジェクトをセットし、次のステートに紐付けを行います。
ActivateGameObject
この挙動はStateに入る直前とStateから出ていく時にGameObjectのActive, 非Activeを設定出来ます。
ここでは、このStateに入る時にActiveにしたいのと、非表示処理はボタンをタップした時に実施するので、EndActiveもチェックを入れた状態にします。
MatatabiButtonの作業
次はMatatabiButtonの作業を行います。
こいつにはボタンを押した時の処理を担ってもらいます。
Stateは以下な感じです。
Start
開始ステートは、MatatabiButtonがタップされたかだけ見ており、タップされたら、次の「またたびを投げる」Stateへ遷移させてます。
またたびを投げる
SendMessageGameObjectで、指定したGameObjectのメソッドを読んでいます。
上記の例では、GameManagerオブジェクトのDidTapMatatabiButton()をコールしています。
これで、GameManagerはMatatabiButtonがタップされたことを検知出来るようになります。
また、このStateのActivateGameObjectで、非表示処理を行いボタンを消してます。
実行結果
MatatabiとMatatabiButtonそれぞれでの実行結果を貼っておきます
Matatabi(Canvas)
MatatabiButton
最後に
Arbor2はまだまだ全然使いこなせていないですが、簡単に自分で機能を追加が出来るのは本当に便利です。
まだ購入していない人は是非Asset Storeで買っちゃいましょう!