verseではUEFNが用意する仕掛けを使用して新しい効果をつくりあげます。verseの中では仕掛けをクラスと呼びます。
(つまりverseを理解するためには、仕掛けデバイスのことも並行して理解しておく必要があるとも言えます)
アイテムスポナーのクラス名は、item_spawner_device
verseでアイテムスポナーを使用したい場合は、クラス名で声をかけてあげる必要があり、item_spawner_deviceと呼んであげます。
verseのつくりかた① 冒頭に決まり文言をいれる
verseの冒頭にusingと書かれたエリアがあります(下画像の赤枠部分)。ここはverseで使用する道具たちの箱であって、使用するクラス(仕掛け)によって用意する箱が違います。item_spawner_deviceの場合、using { /Fortnite.com/Devices }を用意しますが、これはverseをひらいた初期設定で組み込まれています。他にもusing{~}がありますが、そのまま放置で問題ありません。
verseのつくりかた② item_spawner_deviceを変数として使う
変数とは、数値などを保存しておける場所で、item_spawner_deviceが持つ力を保存しておくこともできます。保存するだけでなく、簡単に使いまわすことができます。item_spawner_deviceという生ものでは実は使いづらいので、一度変数にしてから使っていきます。
使いかたは、以下のようになります。
変数名 : item_spawner_device = item_spawner_device{}
変数名は何でも良いです。では実際に使ってみます、下画像の赤枠部分に注目してください。
ItemSpawner : item_spawner_device = item_spawner_device{}
これ以降でItemSpawnerと記述すると、item_spawner_deviceが持つ力を使うことができるようになります。
@editableというのは、UEFNで使用するアイテムスポナーを選択できるようになる呪文です。
verseコードをビルドしてみると下画像の赤枠部分のようにアイテムスポナーをUEFNで選択できるようになり、作成しているverseによって影響されるアイテムスポナーを指定できるわけです。
verseのつくりかた③ item_spawner_deviceの機能を使う
様々な機能を持ちます。代表的な機能は、
・アイテムをスポーンする(ゲーム内に登場させる)
です。実はほかにも機能がありますが、今回はアイテムをスポーンするという機能だけ覚えていただければと思います。
この機能をクラスの言葉で表現すると、以下のようになります。
・SpawnItem =アイテムをスポーンする
機能を使ってみましょう。使い方はOnBegin以下に、変数名.機能()と書きます。
今回の場合は、変数名は先ほど定義したItemSpawner、機能をSpawnItemとします。
つまり、下画像の赤枠部分のようになります。(#TODOと書かれた部分はメモなので、スルーして大丈夫です。)
では、このverseの効果を確かめたいと思いますので、準備していきます。
まずは、UEFNでアイテムスポナーを設置して、詳細設定にて以下のように設定します。
・タイマーに合わせてアイテムをスポーン ➡オフ
・タイマーに合わせてアイテムをリスポーン ➡オフ
・アイテムリスト ➡ゴールドを設定(好きなアイテムで問題ありません)
続いて、verseコードをビルドして、デバイスを設置します。
詳細設定にて、さきほど設定したアイテムスポナーを指定します。
・ItemSpawnerにアイテムスポナーをわりあてる
セッションを開始します。
開始と同時に、ゴールドがスポーンされれば成功です。狙い通りの機能をverseで表現できています。
つくりあげたverseですが、下画像の赤枠部分を消してセッションを開始すると、ゴールドが登場しません。違いを試してみてください。
verseのつくりかた④ item_spawner_deviceの特殊能力を使う
item_spawner_deviceにはほかのクラス(仕掛け)には無い特殊な能力があります。それをイベント機能などと呼んだりします。具体的には、以下のようなイベント機能です。
・プレイヤーがアイテムスポナーからアイテムを入手したときに新しいイベントを起こす
これをクラスの言葉で表現すると、以下のようになります。
・ItemPickedUpEvent
使用方法は、変数名.ItemPickedUpEvent.Subscribe(イベント名)と書きます。イベント名は自由にアレンジできます。
今回の場合は、以下のように書きます。OnItemPickedUpEventを自由な名前で設定しています。
ItemSpawner.ItemPickedUpEvent.Subscribe(OnItemPickedUpEvent)
つまり、プレイヤーが変数ItemSpawnerで設定されたアイテムスポナーからアイテムを入手したときにOnItemPickedUpEventという新しいイベントが起きる、という形になります。
では、OnItemPickedUpEventという新しいイベントは何ですか?という記述を最後におこないます。
例えば、アイテムゲットというテキストを画面に表示させることとします。
つまり、このようにかきます。
OnItemPickedUpEvent(Agent:agent):void=
Print(“アイテムゲット!!!”)
このように書くと、プレイヤーが変数ItemSpawnerで設定されたアイテムスポナーからアイテムを入手したときにアイテムゲットというテキストが画面に表示される、ということになります。
OnItemPickedUpEventというイベントを書いているのですが、関数などど呼ばれます。
(Agent:agent):void=に関しては、今回のItemPickedUpEventというイベント機能の続きで関数を書く場合には必要になる呪文と思ってください。
最後に Print(“アイテムゲット!!!”)と、ハローワールドでおなじみのPrint(“〇〇”)を使います。
セッションを開始して確かめると、アイテムをゲットすると画面左上にアイテムゲット!!!と表記されます。
verseでアイテムスポナーを使う方法 サンプルコード
上記で説明したverseスクリプトです。
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
# See https://dev.epicgames.com/documentation/en-us/uefn/create-your-own-device-in-verse for how to create a verse device.
# A Verse-authored creative device that can be placed in a level
hello_world_device := class(creative_device):
@editable
ItemSpawner : item_spawner_device = item_spawner_device{}
# Runs when the device is started in a running game
OnBegin<override>()<suspends>:void=
# TODO: Replace this with your code
ItemSpawner.SpawnItem()
ItemSpawner.ItemPickedUpEvent.Subscribe(OnItemPickedUpEvent)
OnItemPickedUpEvent(Agent:agent):void=
Print("アイテムゲット!!!")
分からないことがあればお問い合わせフォームよりお問い合わせください
ご質問やご感想はお気軽にコメント欄まで!