このようなランダムにアイテムを取得する仕組みを作っていきます。
目次
コードの全体
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Verse.org/Random }
Reward := class<concrete><public>:
@editable ItemGranter<public> : item_granter_device = item_granter_device{}
@editable HUDMessage<public> : hud_message_device = hud_message_device{}
SearchableObjectManager := class(creative_device):
@editable Rewards : []Reward = array{}
@editable Buttons : []button_device = array{}
OnBegin<override>()<suspends>:void=
for (Objects : Buttons):
Objects.InteractedWithEvent.Subscribe(GrantItem)
GrantItem(Agent : agent) : void =
RandomNumber := GetRandomInt(0, Rewards.Length-1)
if (TheReward:=Rewards[RandomNumber]):
TheReward.ItemGranter.GrantItem(Agent)
TheReward.HUDMessage.Show(Agent)
コードの解説
冒頭
7行目からRewardクラスを定義し、メンバーにitem_granter_device、hud_message_deviceを定義しています。
クラスで定義することで、デバイスの詳細が整頓されます。
13,14行目で@editableを付けて、RewardsとButtonsを定義します。
関数宣言
24行目からGrantItem関数を定義しています。
コードブロックの意味は以下のようになります。
25行目のRewards.LengthでRewards配列の要素の数を取得できます。
26行目で配列にアクセスしていますが、これは失敗する可能性のある式であるため、失敗コンテキストであるif文の括弧内で書いています。
27行目でTheReward.ItemGranterにより、クラスのメンバーにアクセスし、それに対してGrantItemメソッドを呼び出すことで、アイテムをプレイヤーに付与します。
28行目のHUDMessageも同様で、プレイヤーにメッセージを表示させます。
OnBegin~
18行目からがゲーム開始時から実行される式ですが、コードブロックの意味は以下のようになります。
forは指定回数だけコードブロック内の式を実行するものですが、
指定回復を書く括弧内に配列を書くこともでき、その場合全ての配列の要素に対してコードブロックの式を実行することになります。
コメント