verseをつかえば、UEFNが用意する仕掛けを活用して新しい効果をつくりあげることができます。例えば、プレイヤーがテレポーターの仕掛けの中にはいるとゴールドが手に入るという新しい効果をつくることができます。テレポーター自体がもたない機能を、ゴールドが手に入るという新しい効果としてテレポーターにくっつけてあげているイメージです。
verseの中では仕掛けをクラスと呼びます。いろいろなクラスを組み合わる作業をverseでおこないます。
(つまりverseを理解するためには、仕掛けデバイスのことも並行して理解しておく必要があるとも言えます)
そもそもテレポーターの仕掛けとは?
クリエナビではテレポーターの仕掛けを解説していますので、まずはチェックしてみてください。
テレポーターのクラス名は、teleporter_device
verseでテレポーターを使用したい場合は、クラス名で声をかけてあげる必要があり、teleporter_device と呼んであげます。
verseのつくりかた① 冒頭に決まり文言をいれる
verseの冒頭にusingと書かれたエリアがあります(下画像の赤枠部分)。ここはverseで使用する道具たちの箱であって、使用するクラス(仕掛け)によって用意する箱が違います。teleporter_deviceの場合、using { /Fortnite.com/Devices }を用意しますが、これはverseをひらいた初期設定で組み込まれています。他にもusing{~}がありますが、そのまま放置で問題ありません。
verseのつくりかた② teleporter_deviceを変数として使う
変数とは、数値などを保存しておける場所で、teleporter_deviceが持つ力を保存しておくこともできます。保存するだけでなく、簡単に使いまわすことができます。teleporter_deviceという生ものでは実は使いづらいので、一度変数にしてから使っていきます。
使いかたは、以下のようになります。
変数名 : teleporter_device = teleporter_device{}
変数名は何でも良いです。では実際に使ってみます、下画像の赤枠部分に記入していきます。
Teleporter : teleporter_device = teleporter_device{}
これ以降で変数Teleporterと記述すると、Teleporter_deviceが持つ力を使うことができるようになります。
@editableというのは、UEFNで使用するテレポーターを選択できるようになる呪文です。
verseコードをビルドしてみると下画像の赤枠部分のようにTeleporterという項目があらわれ、UEFNでテレポーターを選択できるようになります。作成しているverseによって影響されるテレポーターをUEFN側で指定できるわけです。
verseのつくりかた③ teleporter_deviceの機能を使う
teleporter_dviceには力があるとお話をしましたが、それを機能とよびます。
様々な機能を持ちます。代表的な機能は、
・プレイヤーがテレポートする場所を指定する
などです。実はほかにも機能がありますが、まずはこれらの機能だけ覚えていただければと思います。
この機能は少し難しいプログラミングが必要になるためここでは説明をはぶきます・・。
verseのつくりかた④ teleporter_deviceの特殊能力を使う
teleporter_deviceにはほかのクラス(仕掛け)には無い特殊な能力があります。それをイベント機能などと呼んだりします。具体的には、以下のようなイベント機能です。
・プレイヤーがテレポートしたときに新しいイベントを起こす
これをクラスの言葉で表現すると、以下のようになります。
・TeleportedEvent
使用方法は、変数名.TeleportedEvent.Subscribe(イベント名)と書きます。イベント名は自由にアレンジできます。
今回の場合は、以下のように書きます。
Teleporter.TeleportedEvent.Subscribe(OnTeleportedEvent)
つまり、プレイヤーが変数Teleporterで設定されたテレポーターを押したときにTeleportedEventという新しいイベントが起きる、という形になります。
では、OnTeleportedEventという新しいイベントは何ですか?という記述を最後におこないます。
例えば、テレポートをした回数を画面に表示させることとします。
(新しいイベントは自分で自由に設定することができます)
つまり、下画像のようにかきます。
下画像の青枠部分で変数Countを追加で用意します。この変数をボタンを押した回数として活用する形です。
下画像の赤枠部分でOnTeleportedEventという新しいイベントの詳細を書いています。プレイヤーがテレポートするたびに変数Countがプラス1されて、都度Print(“〇〇”)によって画面に変数Countの値が表示されるという内容です。
このように書くと、プレイヤーが変数Countで設定されたテレポートした回数が画面に表示される、ということになります。
OnTeleportedEventというイベントを書いているのですが、関数などど呼ばれます。
(Agent:agent):void=に関しては、今回のTeleportedEventというイベント機能の続きで関数を書く場合には必要になる呪文と思ってください。
セッションを開始して確かめると、テレポートするたびに画面左上にテレポートした回数が表示されます。
verseでボタンを使う方法 サンプルコード
今回説明したverseコードです。
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
Verse_Teleporter := class(creative_device):
@editable
Teleporter : teleporter_device = teleporter_device{}
var Count : int = 0
OnBegin<override>()<suspends>:void=
Teleporter.TeleportedEvent.Subscribe(OnTeleportedEvent)
OnTeleportedEvent(Agent : agent):void=
set Count += 1
Print("テレポートした回数:{Count}")
ご質問やご感想はお気軽にコメント欄まで!