CRIWARE Unity Plugin Manual  Last Updated: 2024-04-24
[Asset Support] Addressables

サンプル内容

概要

cri4u_samples_addon_asset02_addressables.png

Addressables 経由で ACB/AWB アセットを含むリソースを参照してキュー再生するサンプルです。
画面内のボタンを押すことで対応する prefab をサーバーから取得してインスタンス化します。

注意
本サンプルを正しく動作させるには、実行前に Addressables のコンテンツビルドを行う必要があります。

シーン情報


ミドルウェア CRI ADX (CRI Atom)
サンプル Asset Support サンプル
格納場所 /cri/unity/samples/UnityProject/Assets/CriAssetSamples/Scenes/
シーンファイル Scene_02_Addressables.unity
ACF アセット /cri/unity/samples/UnityProject/Assets/CriAssetSamples/Data/DemoProj.acf
ACB アセット /cri/unity/samples/UnityProject/Assets/CriAssetSamples/Data/CueSheet_0.acb
AWB アセット /cri/unity/samples/UnityProject/Assets/CriAssetSamples/Data/CueSheet_0.awb


プログラムの解説


Addressables 経由ではじめに prefab の一覧情報を持ったアセットを取得し、各ボタンを表示します。
ボタンを押すと対応する prefab を Addressables から取得してインスタンス化します。
各 prefab には CriAtomSourceForAsset がアタッチされており、自動的にキューシートのロード・再生が行われます。

CRI アセットを含むプレハブをインスタンス化

各プレハブに対応するボタンのクリックイベントに対してプレハブのインスタンス化処理を登録しています。

// クリックされた際にインスタンス化する処理を設定
obj.GetComponentInChildren<UnityEngine.UI.Button>().onClick.AddListener(() => {
// 他のプレハブインスタンスがあれば破棄
Unload();
currentInfo = info;
// CRIWARE のアセットを含むかに関わらず、通常の Addressable Asset としてロード可能
info.prefab.InstantiateAsync().Completed += e => {
currentLoaded = e.Result;
UpdateView();
};
});

このとき、CRI アセットへの依存があれば必要なリソースが Addressables の処理内で自動的にキャッシュフォルダに取得されます。
つまり、CRI アセットの有無に関わらず、通常の Addressables コンテンツとして取り扱うことが可能です。

Unity の仕様として、一部のプラットフォームでは AssetBundle のキャッシングが無効となっています。
その場合、CRIWARE のデータについてもキャッシュフォルダとは異なる一時的な領域にダウンロードされます。

キャッシュのクリア

Clear Cache ボタンを押すと、キャッシュの削除を行います。
インスタンス化された prefab が存在する場合は何も行われません。

foreach (var info in prefabList.prefabs)
Addressables.ClearDependencyCacheAsync(info.prefab);

Addressables の API によって通常の AssetBundle キャッシュに加えて CRI アセットの実データのキャッシュも削除されます。

[備考]
Addressables 1.16.1 未満のパッケージでは Addressables の不具合により、
CRI アセットのリソースを含めた全ての Addressables コンテンツのキャッシュ削除が正常に動作しない場合があります。