Arbor2で状態に応じてButtonの表示/非表示、Buttonタップ時のMessageを検知する

書こう書こうと思っていたArbor2の備忘録を書いていきます。

やろうとすること

凄いざっくりですが、以下の事をやろうと思います。

  • ゲームにとあるキャラ(今回は猫としてます)が登場したら、ボタンが表示される
  • ボタンをタップしたら、GameManagerクラス等でイベントキャッチと非表示処理

はじめに

インストール等、Arbor2って?と言うところは以下の公式を参照してください。

arbor.caitsithware.com

また、今回は絶賛開発中のゲームから抜粋してきているので、名前の付け方等、所々「?」となるかもですがご容赦ください。

Hierarchyを準備する。

今回はuGUIを使います。なので、Canvasに、以下の構成でぶら下げます。

f:id:project-unknown:20170814164316p:plain

Canvasは空のオブジェクトです。
Matatabiというのは、今回のゲームは「またたびボタン」としたいので、その名前をおいています。Matatabi自体はCanvasです。
MatatabiButtonが今回、非表示/表示処理を行いたい対象で、Buttonを置いてます。

Matatabi(Canvas)の作業

Matatabiには、MatatabiButtonの表示/非表示処理を担ってもらいます。
MatatabiのInspectorに以下のComponentを追加します。

f:id:project-unknown:20170814164723p:plain

Arborの状態遷移を追加しています。
Open Editorで状態遷移を開きます。
ここで以下のような遷移を作成しています。

f:id:project-unknown:20170814164853p:plain

上記状態について一つずつ説明していきます。

ArborCatStateStageIn

これ自前で用意したものです。
猫が登場したらまたたびボタンを表示すると言う事を行いたい為、Catオブジェクトの状態をチェックし、Catオブジェクトのステータスが茂みに登場したら次の「またたびボタン表示」状態へ遷移させます。

実際にArborCatStateStageInは以下の処理を行ってます。

gist.github.com

if (_Cat.CurrentState == Cat.CatState.Stay_StageIn) {

で、Catオブジェクトの現在の状態を監視している簡単なScriptです。

これで保存すると、Arbor2上では以下の挙動が追加されてます。

f:id:project-unknown:20170814165406p:plain

(初めてこれを見た時、Arborすげええええええ!!!ってなった

後は、上記からArborCatStateStageInを選択し、Catオブジェクトをセットし、次のステートに紐付けを行います。

ActivateGameObject

この挙動はStateに入る直前とStateから出ていく時にGameObjectのActive, 非Activeを設定出来ます。

ここでは、このStateに入る時にActiveにしたいのと、非表示処理はボタンをタップした時に実施するので、EndActiveもチェックを入れた状態にします。

MatatabiButtonの作業

次はMatatabiButtonの作業を行います。
こいつにはボタンを押した時の処理を担ってもらいます。

Stateは以下な感じです。

f:id:project-unknown:20170814165828p:plain

Start

開始ステートは、MatatabiButtonがタップされたかだけ見ており、タップされたら、次の「またたびを投げる」Stateへ遷移させてます。

またたびを投げる

SendMessageGameObjectで、指定したGameObjectのメソッドを読んでいます。
上記の例では、GameManagerオブジェクトのDidTapMatatabiButton()をコールしています。
これで、GameManagerはMatatabiButtonがタップされたことを検知出来るようになります。

また、このStateのActivateGameObjectで、非表示処理を行いボタンを消してます。

実行結果

MatatabiとMatatabiButtonそれぞれでの実行結果を貼っておきます

Matatabi(Canvas)

f:id:project-unknown:20170814170438g:plain

MatatabiButton

f:id:project-unknown:20170814170501g:plain


最後に

Arbor2はまだまだ全然使いこなせていないですが、簡単に自分で機能を追加が出来るのは本当に便利です。
まだ購入していない人は是非Asset Storeで買っちゃいましょう!