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