サンプル内容
概要
-
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;
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 コンテンツのキャッシュ削除が正常に動作しない場合があります。