はじめに
仕掛けのようなクラス以外にも、プレイヤーの動きなどを含めたいろいろな情報をverseでは取り扱えます。例えば、UI (ユーザーインターフェイス)というゲーム画面の情報も取り扱うことができます。
下画像の赤枠部分に表示されるテキストは、verseでつくられたUIです。ゲーム中に手に入れたゴールドの枚数が表示されるような仕組みとなっています。
UIを表示させるには
UI は特定のプレイヤーのみに関連付けることができて、そのプレイヤーのみが表示できます。
よって、私たちプレイヤーの情報が必要になります。
以前に、フォートナイトのキャラクターの情報を取得しましたが、そのような考え方です。
プレイヤーとは、私たちのようなコントローラーを持つ者たちのことで、
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の情報も取り扱うことができます。
これを使えば、フォートナイトで人気のタイクーンゲームもつくれるようになります。
ぜひぜひチャレンジしていきましょう!
それでは。また。
お疲れさまでした。
ご質問やご感想はお気軽にコメント欄まで!