キューシートの非同期ロード

概要

Atom Cue Sheet アセットの非同期ロード及びそのアセット内の Raw ACB Data の非同期ロード方法を説明します。

キューシートの非同期ロード方法

ブループリント

  • (1) Async Load Asset ノードを用いて任意の Atom Cue Sheet アセットを非同期ロードする
  • (2) Load Atom Cue Sheet ノードを用いてそのアセット内の Raw ACB Data を非同期ロードする
  • (3) Atom Cue Sheet アセットの Is Loaded ノードが True を返すのを待つ
criware_ue4_035_async_acb_load_j.png

C++

  • (1) FStreamableManager を用いて任意の Atom Cue Sheet アセットを非同期ロードする
  • (2) USoundAtomCueSheet::OnLoadCompleted デリゲートに任意の関数を登録する
  • (3) USoundAtomCueSheet::LoadAtomCueSheet 関数を用いてそのアセット内の Raw ACB Data を非同期ロードする
  • (4) USoundAtomCueSheet::OnLoadCompleted デリゲートの発火を待つ

(1) Atom Cue Sheet アセットを非同期ロード

FStreamableManager を用いて任意の Atom Cue Sheet アセットを非同期ロードするサンプルコードを以下に示します。
void AAtom120_CueSheetManager::LoadAsync(FSoftObjectPath PathForCueSheet)
{
FStreamableManager& Streamable = UAssetManager::GetStreamableManager();
StreamHnForCueSheet = Streamable.RequestAsyncLoad(
PathForCueSheet,
FStreamableDelegate::CreateUObject(this, &AAtom120_CueSheetManager::OnCueSheetAssetLoadCompleted));
}

(2) OnLoadCompleted デリゲートに任意の関数を登録

USoundAtomCueSheet::OnLoadCompleted デリゲートに任意の関数を登録するサンプルコードを以下に示します。
/* CueSheet は USoundAtomCueSheet* 型 */
CueSheet->OnLoadCompleted.AddUObject(this, &AAtom120_CueSheetManager::OnCueSheetLoadCompleted);

(3) Raw ACB Data を非同期ロード

USoundAtomCueSheet::LoadAtomCueSheet 関数を用いてそのアセット内の Raw ACB Data を非同期ロードするサンプルコードを以下に示します。
/* CueSheet は USoundAtomCueSheet* 型 */
USoundAtomCueSheet::LoadAtomCueSheet(CueSheet, false);

(4) OnLoadCompleted デリゲートの発火を待つ

手順3実行後は USoundAtomCueSheet::OnLoadCompleted デリゲートの発火を待ちます。
非同期ロード処理完了時、成功・失敗に関わらず"手順2で登録した関数"が呼び出されます。
成功・失敗を確認するには USoundAtomCueSheet::GetAcbHn 関数の戻り値を確認してください。
  • nullptr ... 失敗
  • nullptr以外 ... 成功

サンプルMap, サンプルコードのご案内

本SDK内にキューシートの非同期ロードサンプル(C++)が同梱されていますので、ご参考ください。
  • サンプルMap
    • cri\UnrealEngine\Sample\UE4Project\Content\ADX2Samples\Atom120_AsyncLoadCueSheet\Atom120_AsyncLoadCueSheet.umap
  • サンプルコード
    • cri\UnrealEngine\Sample\UE4Project\Source\CriUE4Sample\ADX2Samples\Atom120_AsyncLoadCueSheet\Atom120_CueSheetManager.h
    • cri\UnrealEngine\Sample\UE4Project\Source\CriUE4Sample\ADX2Samples\Atom120_AsyncLoadCueSheet\Atom120_CueSheetManager.cpp

備考

注意
もしログに「E2008121602:No more resources for binding. (Increase max_binds of CriFsConfig.)」と表示されロードが失敗する場合はプロジェクト設定を調整する必要があります。
CriWareプロジェクト設定の [Maximum Number of Binds] の値を、同時に使用する「ストリーム再生データを含むキューシート」の数よりも大きな値に設定してください。

本ページの説明は、CRIWARE UE4プラグイン Ver.1.27.11.00以降のバージョンをご利用中であることが前提となっています。
Ver.1.27.11.00よりも古いプラグインでのご利用方法については弊社テクニカルサポートにお問い合わせください。