前言:本着简单的原则想把ab换成Unity的Addressable。测试一下Addressable的资源生成和管理。
最基础的使用方法很多人都写过了,就不重复写了。记录一些在使用过程中的问题和资源状况。
Addressable版本:1.16.10
Unity版本:2019.3
第二次Build更新资源
先分别说明一下我Group的配置。
静态资源——Cant Change Post Release—— 走本地打包本地加载
动态资源——Can Change Post Release—— 走远程打包远程加载
总的配置,第二篇已经描述过了,需要更新资源需要打开Build Remote Catalogs而且要选择远程打包和远程加载。
以下是测试代码:
async void Create()
{
var handle = Addressables.LoadAssetAsync<GameObject>("tree1");
await handle.Task;
GameObject obj = Instantiate(handle.Result);
obj.transform.position = Vector3.zero;
obj.transform.localScale = Vector3.one * 10;
Debug.Log("加载成功1");
var handle2 = Addressables.LoadAssetAsync<GameObject>("tree2");
await handle2.Task;
GameObject obj2 = Instantiate(handle2.Result);
obj2.transform.position = Vector3.one;
obj2.transform.localScale = Vector3.one * 10;
Debug.Log("加载成功2");
}
以下是首次打包的资源情况。
更新动态Group资源
因为动态资源更新更简单一些,先测试动态资源的更新流程。
现在要把绿色的树的材质改成蓝色。然后进行一次动态资源的更新。
我变更了材质的颜色(红标位置),然后选择了升级之前的构建(绿标位置)。
把得到的新资源(即StandaloneWindows64文件夹)替换掉原来远程的资源。
更新成功,绿色树变成了蓝色树。
然后我们对比一下缓存资源的变化。
首先是 catalog文件。
首次,缓存的 catalog文件和首次打包的资源的catalog文件一致:
更新包,缓存的 catalog文件和更新包的资源的catalog文件一致:
下面是缓存的资源文件。
首次,仅有一个文件(红标文件):
更新包,新增一个文件(绿标文件):
具体内容为下图红框内容。对比大小缓存的应该是下载的bundle资源。
动态资源更新小结:
1:动态资源变化的话只需要打更新包替换掉原来的远程资源即可。
2:更新时会对比远程和本地缓存的catalog文件,如果catalog文件不同便会替换掉缓存的catalog文件并更新缓存资源。
3:资源更新可以回退吗,答案也是可以的。因为Addressable是对比catalog文件进行更新的,所以只要catalog文件不同即会更新。你可以保存资源文件,然后通过替换远程的资源文件来实现各种版本反复横跳。
4:跳回原来版本资源会重复下载吗,如果有缓存的话,是不会重复下载的。只会更新对应的_info文件。
以上是更新动态资源的一些测试情况。
下一篇会测试更新静态资源。