1
0

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 3 years have passed since last update.

UE4+ADX2で、複数のAtomCraftプロジェクトをUE4側で併用・統合(ロード関係まとめ)

Last updated at Posted at 2020-12-10

はじめに

アンリアルエンジン4とサウンドミドルウェア「ADX2 for UE4」を連携させた際、
サウンドオーサリングツール「AtomCraft」で複数プロジェクトからエクスポートされたAtom Cue SheetやAtom Cueを併用する方法と、ロード関係のまとめです。

複数人でプロジェクト別に作成した、もしくは別のプロジェクトから流用してきたAtom Cueを再生したい場合、この方法である程度UE4側プロジェクトで処理を統合することが可能です。

当記事ではUE4.23+「ADX2 LE v2.10.05」を使用します。基本的にブループリントのみでの実装を想定しています。

前提

AtomCraftでビルドしたAtom Cueがあることを前提に進めていきます。AtomCraftの使い方は下記の導入編にあります。
「ADX2 for UE4 LE」を使用します。導入や簡単な使い方は以下の記事にあります。
ADX2 for UE4の導入で、一歩上のサウンド表現を(導入編)
https://qiita.com/SigRem/items/4250925f6d66a4fd287a
ADX2 for UE4の導入で、一歩上のサウンド表現を(実践編)
https://qiita.com/SigRem/items/c089b71c42e898980a46

実装

併用したいacbファイル、acfファイルを確認する

まずはファイルを把握しておきましょう。キューやキューシートが含まれているacfファイルはもちろん、その再生にはacfファイルも必要です。
これらは両方とも正しくインポートされていても、キューの再生時は対応している(同プロジェクトの)acfファイルを読み込むことが必須です。
通常acfファイルを設定するにはツールバーの「Edit」→「Project Settings」を開きます。
01B.png
「CriWare」タブ→「Atom Config」の項目に使用したいacfファイルを設定します。
02B.png

ところが、この方法ではacfファイルをひとつしか設定することができず、ランタイム中に差し替えることもできません。

acfファイルをランタイムで切り替える

実行中にacfファイルを切り替えるには、Load Atom Configノードを使用します。
03B.png
上記の例では、ふたつのacfファイルを切り替える処理にしています。

Acf Objectピンはインプットができるように見えますが、今のところ対応する変数タイプはなさそうです。
04B.png
このため、使用したいキューに対応するacfファイルだけは事前に決め打ちしておく必要がある……
のですが、命名規則を決めておけばキューからacfファイルを判別して対応することが可能です。
05B.png
①再生したいAtomキューのキューシートを取得し、
②最初の3文字を切り出します。
Switch on Stringノードで識別し、
④対応したacfファイルの読み込みへ分岐します。
この処理により、プロジェクトが判別できる識別子をキューシートの頭3文字につけておくことで対応ができるわけです。

キューシートを読み込む

キューシートを手動で読み込むにはLoad Atom Cue Sheetノードを使います。
06B.png
通常はキューの再生を直接行うだけでいいのですが、ランタイムでは読み込みに負荷がかかることがあります。
ロード画面やレベル開始時にキューシートの読み込みを行うことでこの問題を解決できます。

別のレベルをロードする際にキューシートはメモリから破棄されますが、ゲームインスタンスなどのレベルをまたぐことができるクラス内で変数として保持しておくことで、メモリに維持することができます。
07B.png

ロード状況を確認する

isLoadedノードを使うことでキューシートが現在ロード済みかを確認することができます。
08B.png
上記のグラフ例ではキューシートが正常に読み込まれた場合にTrueを返し、画面に表示します。

動的にキューを取得する

キューシートがアセットに組み込まれており、かつロード済みの場合はキューを指定せずとも取得し、再生することができます。
09B.png
Get Atom Cue by NameGet Atom Cue by IndexGet Atom Cue by Idノードを使用します。
それぞれ名前のとおり、キュー名、インデックス番号、IDで指定することができます。
このノードを使えば、アセット内にキューが含まれていなくても再生が可能になります。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?