UIをつくってみよう

はじめに

仕掛けのようなクラス以外にも、プレイヤーの動きなどを含めたいろいろな情報をverseでは取り扱えます。例えば、UI (ユーザーインターフェイス)というゲーム画面の情報も取り扱うことができます。

下画像の赤枠部分に表示されるテキストは、verseでつくられたUIです。ゲーム中に手に入れたゴールドの枚数が表示されるような仕組みとなっています。

UIを表示させるには

UI は特定のプレイヤーのみに関連付けることができて、そのプレイヤーのみが表示できます。

よって、私たちプレイヤーの情報が必要になります。

以前に、フォートナイトのキャラクターの情報を取得しましたが、そのような考え方です。

クリエナビ - UEFNにはじめてふれ...
キャラクターの動きを活用する方法 - クリエナビ 例えば、ボタンの仕掛け(クラス名button_device)とアイテムスポナーの仕掛け(クラス名item_sp

プレイヤーとは、私たちのようなコントローラーを持つ者たちのことで、

fort_characterとは、フォートナイトのキャラクターのことです。

さらに、agentというものがありますが、プレイヤーとかAIとかの情報がたばねられています。

UIを表示させてみる

以下のスクリプトをコピー&ペーストしてセッションを開始して効果をたしかめてみてください。#メモもご参考ください。

using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
#追加モジュール
using { /UnrealEngine.com/Temporary/UI }
using { /Fortnite.com/UI }
using { /UnrealEngine.com/Temporary/SpatialMath }




First_UI_device := class(creative_device):

    @editable
    Button : button_device = button_device{}

    #UIにテキストとして表示するメッセージ型を定義します
    #string型に近いですが、UIとかにテキストを表示させるときはメッセージ型を使う
    TextForMyUI<localizes> : message = "UIが表示されました!!"

    # 実行中のゲームで仕掛けが開始されたときに実行します
    OnBegin<override>()<suspends>:void=
        Button.InteractedWithEvent.Subscribe(OnInteractedWithEvent)

    # カスタム仕様の UI は特定のプレイヤーのみに関連付けることができ、そのプレイヤーのみが表示できます
    OnInteractedWithEvent(Agent:agent):void=
        # エージェントはプレイヤーか AI にすることができますが、取得できるのはプレイヤーの UI のみであるため、
        # プレイヤータイプには、ボタンの仕掛けとやり取りしたエージェントをわりあてる必要があります
        AllPlayers:=GetPlayspace().GetPlayers()
        #GetPlayerUIでプレイヤーに関連するUIを取得します。うまくいかないこともあるので、if文をつかう
        if(InPlayer:=AllPlayers[0],PlayerUI:=GetPlayerUI[InPlayer]):
            #text_block classでは、DefaultTextでUIに表示するテキストを定義します
            MyUI : text_block = text_block{DefaultText := TextForMyUI}
            #AddWidgetでMyUIをUIに表示します
            PlayerUI.AddWidget(MyUI)

実行すると、ボタンを押すと画面左上にテキストが表示されます。

解説です。

まずはプレイヤーの情報を取得します。

私たちが構築するゲームに存在するすべてのプレイヤーの情報を取得します。

AllPlayers:=GetPlayspace().GetPlayers()

つづいて、すべてのプレイヤーの中で一番初めにゲームにアクセスしたプレイヤーを特定し、かつそのプレイヤーのUI情報をGetPlayerUIで取得します。

if(InPlayer:=AllPlayers[0],PlayerUI:=GetPlayerUI[InPlayer]):

取得したUIをカスタムします。表示させたいUIは冒頭に宣言します、メッセージ型と呼ばれるものを使用します。独特なコードですが、[定数名] : message = “[文字列]”が定義となります。

TextForMyUI<localizes> : message = "UIが表示されました!!"

あとはスクリプトに書いてある通りです。

まとめ

いかがでしたでしょうか。

verseではUIの情報も取り扱うことができます。

これを使えば、フォートナイトで人気のタイクーンゲームもつくれるようになります。

ぜひぜひチャレンジしていきましょう!

それでは。また。

お疲れさまでした。

ご質問やご感想はお気軽にコメント欄まで!

コメントする