背景
UEFNの様々な島を制作して思ったことがあります。それはプレイヤーが分かりやすいようなチュートリアルやゲームの説明を島に配置していくのが面倒だと感じていました。そこで使えそうなデバイスだったのがポップアップダイアログの仕掛け
になります。
やること
ポップアップダイアログのタイトルや詳細、各ボタンの名前設定、それぞれのボタンのイベント購読をやってみます。
動画
実装
利用するDevice
- 自動表示を無し
- 反応Typeを6ボタンにする。(ボタンを6個配置する。※最大6個まで)
- デフォルトの戻るボタンをボタン6に設定(ポップアップを閉じるボタンの設定)
全体コード
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
popup_controller_device := class(creative_device):
@editable
Popup:popup_dialog_device=popup_dialog_device{}
TitleText<localizes>(Text: string) : message = "{Text}"
DescriptionText<localizes>(Text: string) : message = "{Text}"
PopupText1<localizes>(Text: string) : message = "{Text}"
PopupText2<localizes>(Text: string) : message = "{Text}"
PopupText3<localizes>(Text: string) : message = "{Text}"
PopupText4<localizes>(Text: string) : message = "{Text}"
PopupText5<localizes>(Text: string) : message = "{Text}"
PopupText6<localizes>(Text: string) : message = "{Text}"
OnBegin<override>()<suspends>:void=
Popup.SetButtonCount(6)
Popup.SetTitleText(TitleText("TitleText"))
Popup.SetDescriptionText(DescriptionText("DescriptionText"))
Popup.SetButtonText(PopupText1("PopupText1"),0)
Popup.SetButtonText(PopupText2("PopupText2"),1)
Popup.SetButtonText(PopupText3("PopupText3"),2)
Popup.SetButtonText(PopupText4("PopupText4"),3)
Popup.SetButtonText(PopupText5("PopupText5"),4)
Popup.SetButtonText(PopupText6("PopupText6"),5)
Popup.Show()
Popup.RespondingButtonEvent.Subscribe(OnResponding)
OnResponding(Agent:agent,Index:int):void=
Print("Popup Responding, Index: {Index}")
タイトルや詳細、ボタン名に表示するためのmessage型
変数を宣言。OnBeginでそれぞれの要素にmessage
を流し込んでいる。どのタイトルや詳細に関しては一つしかないので引数にmessage
だけを入れる形になっていて、ボタンはmessage
とそのボタンのインデックスを指定する形になっています。
Popup.Show()
で表示するように設定して、RespondingButtonEvent
を購読することでどのボタンと誰が押したかを取得できるようになっています。
まとめ
チームの選択や流行りのボックスfightの役職選択にとても使えそうだと感じました。他にもチュートリアルやゲームの説明にも使えそうですね。
余談
この度UEFN/Verseに関するオープンコミュニティサーバーを建ち上げました。ちょっとでも興味があれば奮ってご参加くださいませ。