目次
はじめに
この記事ではUEFNで多く多用されるシーケンスの制御をデバイスとVerseの両方で行う解説をします。ぜひ参考になれば幸いです。
個人の備忘録としてまとめています。誤った情報がある場合があります。
コメントにてご指摘のほどお願いいたします。
また、Verseでは非同期処理でより良いコードが書けますが、直感的にわかりやすいSubscribe方式で書いています。
非同期処理の場合でしたらこちらに素晴らしい記事がありますので、ぜひ参考にしていただきたいです!
本記事は以下の記事を参考にしています。
環境
UEFN5.4
解説
直観的に理解できるようにデバイスでの手法を紹介した後にVerseで同様の処理記述例を紹介します。
共通
①デバイスの用意
UEFNのデバイスから以下を選びます。
ボタン ×2
CinematicSequence ×1
マップに配置します。
アウトライナー上でPlayボタンとPauseボタンという名前に変更しました。
②シーケンスの用意
シーケンスアセットを作成します。
適当なモデルを配置します。
シーケンサーに登録してキーを打ってアニメーション付けます。
わかりやすく、位置を変更するものにしました。
③シーケンスの登録
配置したCinematicSequenceしかけにシーケンスの登録をします。
デバイスでのやり方
①イベントの登録
CinematicSequenceしかけを選択して以下のように設定します。
※スポイトボタンで画面上のボタンを選択するのが便利!
再生機能にPlayボタンのOnInteract
一時停止機能にPauseボタンのOnInteract
②実行と確認
セッションを開始して実際にシーケンスの再生と一時停止を確認できたら完了です。
Verseでのやり方
デバイスでやっていたことをVerseというコード形式のプログラミングで同様のことを行ってみましょう。
①Verseの新規作成
ウィンドウからVerse Explorerを開き、任意のフォルダからVerseファイルを追加します。
名前をsequence_controllerとしました。
作成ボタンを押します。
追加されたVerseコードをダブルクリックするとVSCodeが開きます。
②コードの編集
以下のコードを記載します。
VerseはC#やC++とは異なり、改行によりコードブロックを識別している言語です。
そのため、改行の問題によりエラーが出ることがあります。半角スペースで改行に問題がないかをよく確認しましょう。
コードの解説は最後に行います。
記載が完了したらCtrl + S で保存します。
UEFNに戻り、Verseコードのビルドを行います。
③VerseDeviceの配置と登録
コンテンツブラウザにあるsequence controllerをマップに配置します。
詳細から@editableで定義した変数にデバイスを登録していきます。
デバイスでイベントを登録している人はVerseでの動作を確認できないので
登録を削除しておきましょう。
④実行と確認
セッションを開始して実際にシーケンスの再生と一時停止を確認できたら完了です。
⑤コード解説
@editable はVerseで定義した変数をエディタに公開する場合に利用します。
今回はマップに配置しているスイッチとシーケンス再生デバイスを参照するのに利用しています。
OnPlaySequenceとOnPauseSequenceは独自に作成した関数です。
コメントにもあるようにCinematicSequenceの再生と一時停止を行っています。
cinematic_sequence_deviceで制御できる機能はVerseの定義を見てみたり、公式のドキュメントを見てみましょう。
ボタン一つで切り替える場合はこの関数を利用できそう~みたいな気付きがあるのでお勧めです。
Verseで元から用意されているOnBeginはゲーム開始時に呼ばれるイベントです。
ここでは、ボタンを押したときのイベントと独自で作成した関数を紐づけする登録作業をしています。
Verseのメリット
ここまで解説でVerseを使うメリットがないと思われるかもしれませんが、Verseを使うメリットをいくつか紹介します。
①遅延処理
デバイスではタイマー系の仕掛けを使わないといけない遅延処理などはSleep(時間)で遅延させることができます。
②シーケンスの再生位置の指定
現状、マテリアルパラメータコレクションをVerseから直接制御することができません。
そのため、あらかじめシーケンスに焼きこんで、シーケンスの時間を制御することで間接的にマテリアルパラメータコレクションを制御する方法があります。
そのような場合ではこのようなコードを書くとよいでしょう。
シーケンスの再生フレーム/時間の確認には時刻表示の選択でできます。
最後に
UE4やUE5向けの記事を書いています。
皆様の応援が投稿のモチベーションになりますので
コメントやTwitterのフォローなどしていただけるとありがたいです。
それではよきゲーム開発を。