DoozyUIのノード使ってみる

覚えるの面倒だなと思って避けてたんですけど、使ってみたら便利だったので持ってる人は使ってみても……って思います。

見た感じで分かるようにはなってます。

UIViewの遷移をノードベースでつないで表現できる機能です。

遷移の条件はDoozyのボタンか、GraphControllerから直接GoToNodeメソッドを使って遷移することができます。

前提としてUIViewを適当に作っておきます。

遷移はUIViewじゃないとできないかも。PopUpとかは出来ないっぽい?

1.シーン内にGraph Controllerを追加する。

2.グラフエディタを開く

3.グラフアセットを作成する

画像ではすでにノードがありますが、左上の「Graph」ボタンから[Graph Controller]用のアセットを作れます。

4.ノード編集

ゲームエンジンによくあるノードエディタです。

ノードエディタ内で右クリックからメニューを開けます。

[Crate Node] ➡[UI Node]がUIViewを表示する基本のノードです。

ノードをクリックして選択すると、インスペクタに設定画面が表示されます。

[On Enter Node]と[On Exit Node]はそれぞれノードに遷移したときと次のノードに遷移するときに呼ばれます。

可能な処理はUiViewを表示するか隠すかだけです。

また、上段水色の[OutPutConnections]には次のノードに移る条件を指定できますが、

ここで指定できる遷移条件は、UIButtonと時間経過と文字列を送れるGameEventです。

この[OutputConeections]からのボタン設定ですが、[Alt+D]から表示できる

DoozyのAssetエディタでButtonの欄に設定している必要があります。

それと設定したあとに、UIButtonをシーン内に置いただけではダメで、

ゲームオブジェクト名をリネームする必要があります。

画像のように対象のUIButtonオブジェクトを選択して、カテゴリと[Button Name]をインスペクタから設定してから、「Rename GameObject To ""」ボタンを押します。

多分、Doozyはゲームオブジェクトを名前で判別してる気がします。UIButtonに限らずUiViewやそのほかのオブジェクトもリネームしておかないと、表示するときのアニメーションが再生されなかったりします。

ここまでくればノード作成は感覚的に出来るかと。線を引っ張って次に表示したいノードにつなげて、ノード内のShowViewとHideViewにUIViewを設定していきます。


注意点として多分Start()内で呼んでも拾ってくれません。


これでグラフ設定は完了です。

あとUIViewの[Behaiviour at Start]をHideにしておかないとダメなようです。公式のドキュメント動画ではHideにしてました。してなかったら最初から表示されています。ずっと表示するならもちろん何もしなくていいですが。


使ってみた感じ、やっぱりGraph Controller自体はすごく便利です。

私は、この処理をオンラインで対戦相手を探す時のUIに使ったんですが、「相手を探しています」みたいなよく使うUIを

UiViewで作ってプレハブにすれば、シーンに追加するだけで使いまわせます。

グラフを作る必要はありますが、GameEventMessage.SendEventを呼び出すようにしておけば、同じタイミングで呼ぶことも簡単にできます。 

gameEventを使うと遷移がややこしくなってしまうかも。ゲームのあるタイミングでViewを出したいときは、UIView.Showviewを直接呼んだ方が良いかもしれません。

UIPopUpを使っても好きな時に呼べますが。

設定することがちょっとありますが、それさえクリアできれば面倒なUI処理の負担を大幅に減らしてくれます。

個人的に必須アセットだと思ってます。

色んなプラットフォームでもバグなくちゃんと動きますし。