0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ADX for UE4で、キューシートからキューを動的に読み出す

Last updated at Posted at 2022-08-10

はじめに

アンリアルエンジン4とサウンドミドルウェア「ADX for UE4」を連携させる際、キューそのものを扱わずキューシートから直接読み出す方法についてです。

キューシートから動的に読み出すメリット

キューを動的に読み出すことで次のようなメリットがあります。

  • キュー名ベースで管理するため、外部のスプレッドシートなどでデータの把握がしやすい
  • キューシートのインポート時にキューアセットを作成しないことで、パッケージのビルド時間短縮につながる
  • アセットのリファレンス関係をクリーンに保てる

しかし、キューアセットがレベル上のアクターパラメータから直接参照できないなどのデメリットもあります。
この記事では実装を一工夫し、そういったデメリットを無視する手段も紹介します。

前提

当記事ではUE4.26.1を使用します。ADX LEがUE5に対応した際は同じ実装法が使えると思われます。
基本的にブループリントのみでの実装を想定しています。
ADXはインディー向けの「LE版」であれば、無料で使用できます。
https://game.criware.jp/products/adx-le/

なお、ADX2はADXへ名称が変更になりましたが、ツール構成は変更ありません(2がないから古いほう、というわけではありません)。

記事執筆時点のADX for UE4のSDKバージョンはv1_29です。

ADX2 for UE4の導入や基本的な使い方は以下の記事にあります。必要に応じて参照してください。
ADX2 for UE4の導入で、一歩上のサウンド表現を(導入編)
https://qiita.com/SigRem/items/4250925f6d66a4fd287a
ADX2 for UE4の導入で、一歩上のサウンド表現を(実践編)
https://qiita.com/SigRem/items/c089b71c42e898980a46

実装

キューシートのインポート

AtomCraftでビルドしたキューシートをUEにインポートします。
acb、acfファイルをコンテンツブラウザにドラッグアンドドロップしてください。
A01.png

キューアセットを生成しないよう設定するには、インポートオプションを操作する必要があります。
「SoundAtomCue Assets:」の「NewAssets」を「Do Not Create」に変更します。
A02.png
ウィンドウ下部の「Apply same settings for other imports.」にチェックをつけると、この設定をデフォルトとしてインポートするようになります。
A03.png
また、「Existing Assets」を「Delete」にすると既存のキューアセットが削除されます。
これは取り返しがつかないため、既に参照されているアセットがある場合は「Keep」にしておくのが安全でしょう。
A04.png

これでキューシートとAtomConfigのみがインポートされました。
A05.png

ツールバーの「Edit」→「Project Settings」からプロジェクト設定を開き、
A06.png

CriWareタブの「Atom Config」にインポートしたacfファイルを設定します。
A07.png

キューシートからキューアセットを直接読み込む

キューシートのみをインポートしたことで、アセットとしてキューを参照することができなくなりました。
ブループリントからキューを抽出して再生してみましょう。
ブループリントエディタを開き、キューシートを格納するための変数を追加します。
B01.png
Detailsパネルにて変数名と型の設定をします。「Sound Atom Cue Sheet」型の「Object Reference」を選択します。
B02.png
コンパイルし、変数の初期値としてインポートしたキューシートを指定します。
B03.png
Play Atom Sound at Location by Nameノードでキューの名前を直接指定して再生が可能です。
B04.png
このノードは再生するためのパラメータが必要になるため、青い「Params」のインプットピンから線を伸ばしMake AtomComponentParamsノードを配置します。
B05b.png
B05.png
これでRキーを押すと、キューアセットがないにも関わらず該当するキューが再生されるはずです。

アクターパラメータからキューを参照する

この方法ですと、レベルに配置したAtomコンポーネントに直接キューアセットを指定することができません。
しかし、キュー名を変数として保持すれば通常と変わらない挙動で扱うことができます。
ブループリントを使い、レベル上のAtomコンポーネントに任意のサウンドを再生させてみましょう。

適当な場所にブループリントクラスを作成します。
C01.png
親クラスは「Actor」としますが、他に望む処理がある場合は別のクラスにしても構いません。
C02.png
適当に名前をつけます。
C03.png
ブループリントを開き、「Atom Component」を追加します。サウンドを再生する役のコンポーネントです。
C04.png
ふたつの変数を追加します。それぞれ「Sound Atom Cue Sheet」型と「Strings」型です。
C05.png
どちらも目玉のマークをクリックして、変数を外部からアクセス可能にしておきます。
C06.png
イベントグラフで処理を書いていきます。
Get Atom Cue by NameでStrings型の変数の名前を読み取り、キューを取得します。
C07.png
Atomコンポーネントに対して、Set Soundで取得したキューを再生するサウンドに指定します。
C08.png
最後にPlayノードでAtomコンポーネントを再生します。
C09.png

これでキューシート、キュー名を指定してサウンドが再生されるようになりました。
C10.png

キューアセットを作成しなくても再生が可能で、コンテンツブラウザの視認性も上がります。
どうしても必要、という場合でなければこういった方法でプロジェクトのシェイプアップをはかってもいいかもしれません。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?