Verseで仕掛けを作り既存の仕掛けと連携する[UEFN,Verse]

目次

Verseファイルを作成して仕掛けを作る

  • 公式ドキュメントに沿って同じように作ってます。

Verseファイルを新規作成する

  • 「Verse Explorer」で、プロジェクト名(今回は「DeviceTest」)を右クリックして表示されるメニューから「Add new Verse file to project」を選択する。
  • テンプレート選択画面が表示されるので、内容はそのままにして「Device Name」を変更する。
  • 「Device Name」を変更するとVerseプログラム内の該当箇所も自動で変更される。
  • 「作成」ボタンを押すとVerseファイルが作成される。
  • 「Verse Exploler」で「Content」フォルダに追加されているのが確認できる。
  • メニューから「Verse」>「Verseコードをビルド」を選択してビルドする。
  • ビルドが正常に完了するとコンテンツブラウザでファイルを確認できる。
  • 「コンテンツ」フォルダの「CreateDevices」フォルダに入っている。

Verseファイルをレベル上に配置する

  • 作成した「test_device」をドラックアンドドロップすると配置できる。この形で配置されるんですね。
    これでUEFNでの設定は完了。

フォートナイトのクリエイティブで確認する

  • 「セッションの開始」を押してフォートナイトを起動し、「ゲームをスタート」してログに表示されていればOK。
  • テンプレそのままではあるがこれでログに文字列を表示する仕掛けができた。

作成した仕掛けに変数を追加して公開する

  • こちらも公式ドキュメントを見ながら。
  • 作成した仕掛けに設定した変数を公開して外部から変更できるようにする。

変数を作成する

@editable
[PropertyName] : [type] = [DefaultValue]
  • 変数を公開するには「@editable」を変数の前に追記する。
@editable
GreetingMessage : string = "Hello, stranger"
  • String型の変数「GreetingMessage」を作成して公開する。初期値は「Hello, stranger」。
  • 作成したVerseファイルに追記する。
  • メニューから「Verse」>「Verseコードをビルド」を選択してビルドする
  • エディタから作成した仕掛けを選択すると「詳細」タブに「GreetingMessage」という項目が追加されている。

変数に設定された値を表示する

Print("{GreetingMessage}")
  • 「GreetingMessage」に設定した値がログに表示されるようにする。
  • Verseファイルに追記してビルド。
  • エディタから「GreetingMessage」の値を変更する。
  • フォートナイトクリエイティブでゲームを開始するとログに設定した値が表示される。

他の仕掛けと連携する

  • 公式ドキュメントを参考にしてます。
  • 仕掛け「Button」と仕掛け「Item Spawner」を配置してVerseファイルで連携させる。
    具体的にはボタンにインタラクトしたらアイテムをスポーンさせる処理をVerseファイルで作成する。

既存の仕掛けを配置する

  • コンテンツブラウザの「Fortnite」>「Devices」にある仕掛け「Button」をドラッグアンドドロップして配置する。
  • 同様に仕掛け「Item Spawner」を配置する。
  • 仕掛け「Item Spawner」はデフォルトで一定時間毎にアイテムをスポーンさせる設定になっていたので「Spawn Item On Timer」「Respawn Item On Timer」のチェックを外しておく。
  • また、スポーンするアイテムがデフォルトでは設定されていないので「アイテムリスト」の「+」をクリックしてスポーンさせるアイテムを適当に選んでおく。

配置した仕掛けを参照する

@editable
Button:button_device = button_device{}
  • Verseファイルから仕掛け「Button」を参照するための変数(Button)を作成する。
  • 変数名の後は参照する仕掛けのタイプ(button_device)を設定して初期化を行う記述(button_device{})をすればいいみたい。
  • 公開してエディタから編集できるようにするので「@editable」も追加する。
  • 仕掛けのタイプや関数などは公式サイトを見ればよさそう。
@editable
ItemSpawner:item_spawner_device = item_spawner_device{}
  • 仕掛け「Item Spawner」も参照できるようにする。
  • こちらも「Item Spawner」のタイプ「item_spawner_device」を設定して初期化(item_spawner_device{})する。
  • 公開するので「@editable」も追記。
  • Verseファイルに追加して保存、ビルド。
  • 「詳細」タブを確認すると変数「Button」「ItemSpawner」が追加されている。
  • 「Button」の「なし」の部分をクリックすると参照できる仕掛けのリストが表示されるので配置した仕掛け「Button」を選択する。
  • 仕掛け「Button」は一つしか配置していないのでリストにはそれだけ表示されている。
  • 変数「ItemSpawner」も同様に設定する。

参照した仕掛けのイベントに連携させる

OnButtonInteractedWith(InPlayer:agent):void=
    ItemSpawner.SpawnItem()
  • 仕掛け「ItemSpawner」でアイテムをスポーンする関数(OnButtonInteractedWith)を作成する。
  • 「ItemSpawner.SpawnItem()」で参照している仕掛けにアイテムをスポーンさせるメソッド「SpawnItem()」を呼びだしている・・・のかな。
  • 引数に「InPlayer:agent」が必要となるがよくわかっていないのでわかったら追記したい。
Button.InteractedWithEvent.Subscribe(OnButtonInteractedWith)
  • ボタンのイベントと関数(OnButtonInteractedWith)を連携する。
  • そのためにボタンがインタラクトしたときに発生するイベント「InteractedWithEvent」にサブスクライブ(Subscribe)する。
  • サブスクライブすることでイベントが発生したときに呼び出す関数(OnButtonInteractedWith)を指定できる。
    これをイベントのバインディングと呼び、バインドされた関数はハンドラと呼ばれる。
  • Verseファイルに追加して保存、ビルドする。
  • ボタンをインタラクトするとアイテムがスポーンするようになりました。

コメント

コメントする

目次