UEFN Verse言語 メタバース

【UEFN】UIボタンの作り方(3ページ目)│Verse解説の続き

【UEFN】UIボタンの作り方(3ページ目)│Verse解説の続き
みなみ

Verse解説の続きを教えてほしいです!

りゅう

初心者向けにわかりやすく解説してほしいですね!

こんなお悩みを解決します。

 本記事の内容
 本記事の信頼性

この記事を書いている僕は、クリエイター兼ブロガーです。実際に現在進行形でUEFNを学んでいます。

今回は、UIボタンの作り方のVerse(3)について解説します。

なお、1,2を見ていない方は先に1,2から進めましょう。

>> UIボタンの作り方

>> UIボタンのVerse解説(2)

【UEFN】UIボタンの作り方を画像付きで徹底解説【Verse言語】
【UEFN】UIボタンの作り方を画像付きで徹底解説【Verse言語】

続きを見る

【UEFN】UIボタンの作り方(2ページ目)│Verse解説の続き
【UEFN】UIボタンの作り方(2ページ目)│Verse解説の続き

続きを見る

※以下のコードの解説文は、プログラミング初心者の主が調べながら記述したものです。

コードの解釈に誤りがありましたら恐縮ですm(_ _)m

参考程度にどうぞ。

それでは、さっそくやっていきましょう。

あすか

UIボタンの作り方(3ページ目)│Verse解説の続き

CreateMyUIの定義

    CreateMyUI(Agent : agent) : canvas = 
        for(CurrButtonUI : ButtonUI):
            case(CurrButtonUI.ButtonStyle):
                1 => 
                    ThisButtonUI := button_loud{DefaultText := StringToMessage(CurrButtonUI.ButtonText)}
                    ThisButtonUI.OnClick().Subscribe(HandleSelectedUIButton)
                    if(set CurrButtonUI.ButtonWidgetPerPlayer[Agent] = ThisButtonUI){}
                2 =>
                    ThisButtonUI := button_quiet{DefaultText := StringToMessage(CurrButtonUI.ButtonText)}
                    ThisButtonUI.OnClick().Subscribe(HandleSelectedUIButton)
                    if(set CurrButtonUI.ButtonWidgetPerPlayer[Agent] = ThisButtonUI){}
                3 =>
                    ThisButtonUI := button_regular{DefaultText := StringToMessage(CurrButtonUI.ButtonText)}
                    ThisButtonUI.OnClick().Subscribe(HandleSelectedUIButton)
                    if(set CurrButtonUI.ButtonWidgetPerPlayer[Agent] = ThisButtonUI){}
                _ => 
                    Print("~ERROR: ButtonStyle integer over/under-flow")
        CanvasArray := ReturnCanvasSlots(Agent)
        MyInteractableButtons : canvas = canvas:
            Slots := CanvasArray
        return MyInteractableButtons

canvasクラスの詳細

今回forループを実行する理由

agentにoptionを使わない理由

for(CurrButtonUI : ButtonUI):の論理

Caseの詳細

ButtonUI の具体的な要素の内容

ButtonStyleの値はもとからCurrButtonUIに格納されている

1 =>~Print("~ERROR: ButtonStyle integer over/under-flow")の詳細

1 => ThisButtonUI := の論理

button_loud{DefaultText := StringToMessage(CurrButtonUI.ButtonText)}で{}を使っている理由

ThisButtonUI := button_loud{DefaultText := StringToMessage(CurrButtonUI.ButtonText)}で「CurrButtonUI」を使用する理由

DefaultTextに代入する目的

ThisButtonUI := button_loud{DefaultText := StringToMessage(CurrButtonUI.ButtonText)}の意味

ThisButtonUIに代入しなければならない理由

ThisButtonUI に直接文字列を代入できるが・・・

デフォルトテキストを指定する理由

ThisButtonUI.OnClick().Subscribe(HandleSelectedUIButton)は何をしている?

button_loudクラスの詳細

button_quietクラスの詳細

button_regularクラスの詳細

記号「=>」とは

フローを制御とは

=を使用するのと同様とは

ThisButtonUI.OnClick().Subscribe(HandleSelectedUIButton)の詳細

ThisButtonUI.OnClick().Subscribe(HandleSelectedUIButton)でEventを使わない理由│OnClick()を使う理由

OnClick関数とevent関数の違い

OnClick()に()をつける理由

Subscribe関数の詳細

ThisButtonUI.OnClick().Subscribe(HandleSelectedUIButton)のまとめ

if(set CurrButtonUI.ButtonWidgetPerPlayer[Agent] = ThisButtonUI){}の詳細

CurrButtonUIの意味

CurrButtonUIとThisButtonUIの違い

ThisButtonUIをセットする理由

【重要】ButtonWidgetPerPlayerの詳細

2~3 =>の解説は1と同じであるため省略します。

ButtonStyleが1, 2, 3以外の場合の詳細

CanvasArray := ReturnCanvasSlots(Agent):の詳細│ReturnCanvasSlotsの定義(含)

CanvasArray := ReturnCanvasSlots(Agent)の記述理由

キャンバススロットの配列とは

MyInteractableButtons : canvas = canvas:の詳細

MyInteractableButtons : canvas = canvas:の最後に「:」をつける理由

canvasクラスの詳細

Slots := CanvasArrayの詳細

return MyInteractableButtonsの詳細

ReturnCanvasSlots(Agent : agent):[]canvas_slot=~の詳細

    ReturnCanvasSlots(Agent : agent):[]canvas_slot=
        var CanvasSlotArray : []canvas_slot = array{}
        for(ThisButtonUI : ButtonUI):
            if(ThisWidget := ThisButtonUI.ButtonWidgetPerPlayer[Agent]):
                Agent.LoadButtonState(ThisButtonUI)
                ThisSlot := canvas_slot:
                    Offsets := margin{Top := ThisButtonUI.ButtonPosition.Y, Left := ThisButtonUI.ButtonPosition.X, Bottom := ThisButtonUI.ButtonSize.Y, Right := ThisButtonUI.ButtonSize.X}
                    ZOrder := 0
                    SizeToContent := ThisButtonUI.SizeToContent
                    Widget := ThisWidget
                set CanvasSlotArray += array{ThisSlot}
        return CanvasSlotArray

canvas_slot 構造体の詳細

ReturnCanvasSlots(Agent: agent): []canvas_slot =の詳細

ReturnCanvasSlots(Agent: agent): []canvas_slot = で[]をつける理由

var CanvasSlotArray: []canvas_slot = array{}を記述する理由

配列使用時の初期化について

for(ThisButtonUI : ButtonUI):の詳細

if(ThisWidget := ThisButtonUI.ButtonWidgetPerPlayer[Agent]):の詳細

Agent.LoadButtonState(ThisButtonUI)の詳細

Agent.LoadButtonState(ThisButtonUI)を記述しなかった場合

ThisWidget ではなく ThisButtonUI を指定している理由

関連するウィジェットとは

ThisSlot := canvas_slot:の詳細

ThisButtonUI.ButtonPositionでThisButtonUIが使える理由&ButtonSizeとは

vector2の詳細

canvas_slot structとは

margin構造体とは

ZOrder := 0の詳細

SizeToContent := ThisButtonUI.SizeToContentの詳細

Widget := ThisWidgetの詳細

ウィジェットを参照する理由

Widget := ThisWidgetの代入は、canvas_slotに特定のウィジェットを関連付けるため

CanvasSlotArray += array{ThisSlot}の詳細

+=の詳細

array{}を記述する理由

return CanvasSlotArrayの詳細

return CanvasSlotArrayの記述位置について(インデント)

まとめ

今回はUIボタンの作成方法のVerse(3)について解説しました。

お疲れさまです🍵

コツコツがんばりましょ!

 僕のTwitterアカウントです。
 Next→
【UEFN】UIボタンの作り方(4ページ目)│Verse解説の続き
【UEFN】UIボタンの作り方(4ページ目)│Verse解説の続き

続きを見る

【UEFN】UIボタンの作り方(5ページ目)│Verse解説の続き
【UEFN】UIボタンの作り方(5ページ目)│Verse解説の続き

続きを見る

  • この記事を書いた人
  • 最新記事

あすか(Asuka)

自己紹介:UEFNクリエイター兼ブロガー
Verse言語独学中 | UE・プログラミング・3Dモデリング完全初心者 | 備忘録として学習記録をブログに残しています。
■好きな言葉
徳は弧ならず必ず隣あり.
■ひとこと
まだまだ未熟者ですが、
よろしくお願いします。

-UEFN, Verse言語, メタバース
-, ,