CRIWARE Unity Plugin Manual  Last Updated: 2025-05-08
[Asset Support] Addressables

示例内容

概述

cri4u_samples_addon_asset02_addressables.png

通过Addressables參照包含ACB/AWB Asset的资源并播放Cue的示例。
通过按下画面的按钮,从服务器获取对应的prefab,并对其进行实例化。

注意
要正常运行本示例,需要在运行前进行Addressables的内容构建。

场景信息


中间件 CRI ADX (CRI Atom)
示例 Asset Support 示例
存储位置 CRIWARE/SDK/unity/samples/UnityProject/Assets/CriAssetSamples/Scenes/
场景文件 Scene_02_Addressables.unity
ACF Asset CRIWARE/SDK/unity/samples/UnityProject/Assets/CriAssetSamples/Data/DemoProj.acf
ACB Asset CRIWARE/SDK/unity/samples/UnityProject/Assets/CriAssetSamples/Data/CueSheet_0.acb
AWB Asset CRIWARE/SDK/unity/samples/UnityProject/Assets/CriAssetSamples/Data/CueSheet_0.awb


程序说明


首先通过Addressables获取持有prefab的列表信息的Asset,并显示各按钮。
按下按钮时,将从Addressables获取相对的prefab后进行实例化。
在各prefab上挂载有CriAtomSourceForAsset,会自动进行Cue Sheet的加载和播放。

初始化和目录信息的修改

在CRI Addressables初始化Addressables后需要调用目录信息的修改处理。

// 确认有否远程目录后初始化Addressables
obj.GetComponentInChildren<UnityEngine.UI.Button>().onClick.AddListener(() => {
// 存在其他Prefab实例时销毁
Unload();
currentInfo = info;
// 无论是否包含CRIWARE的Asset,都可以作为通常的Addressable Asset加载
info.prefab.InstantiateAsync().Completed += e => {
currentLoaded = e.Result;
UpdateView();
};
});

此时,如果依赖CRI Asset,则所需的资源将使用Addressables自动在缓存文件夹中获取。
换句话说,无论CRI Asset是否存在,也可以作为通常的Addressables内容使用。

在某些平台上,Unity规范禁用了AssetBundle缓存。
在这种情况下,CRIWARE数据将下载到临时区域中,而不是缓存文件夹。

缓存的清除

按下“Clear Cache”按钮时不存在实例化的Prefab时,则删除缓存。
如果存在实例化预制件,则不执行任何操作。

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

Addressables的API会清除通常的AssetBundle缓存和CRI Asset的实际数据的缓存。

[备注]
对于Addressables 1.16.1以前的包,由于Addressables的缺陷, 所有包含CRI Asset资源的Addressables内容的缓存可能无法正常删除。


translated_by_Google.png

THIS SERVICE MAY CONTAIN TRANSLATIONS POWERED BY GOOGLE. GOOGLE DISCLAIMS ALL WARRANTIES RELATED TO THE TRANSLATIONS, EXPRESS OR IMPLIED, INCLUDING ANY WARRANTIES OF ACCURACY, RELIABILITY, AND ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.