0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

UEFN / VerseAdvent Calendar 2023

Day 22

【UEFN】Verseでポップアップダイアログ操作してみる

Last updated at Posted at 2023-12-21

背景

UEFNの様々な島を制作して思ったことがあります。それはプレイヤーが分かりやすいようなチュートリアルやゲームの説明を島に配置していくのが面倒だと感じていました。そこで使えそうなデバイスだったのがポップアップダイアログの仕掛けになります。

やること

ポップアップダイアログのタイトルや詳細、各ボタンの名前設定、それぞれのボタンのイベント購読をやってみます。

動画

実装

利用するDevice

image.png

設定
image.png

  • 自動表示を無し
  • 反応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に関するオープンコミュニティサーバーを建ち上げました。ちょっとでも興味があれば奮ってご参加くださいませ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?