关于Addressable转换AssetBundle热更新测试记录(五)

前言:本着简单的原则想把ab换成Unity的Addressable。测试一下Addressable的资源生成和管理。
最基础的使用方法很多人都写过了,就不重复写了。记录一些在使用过程中的问题和资源状况。
Addressable版本:1.16.10
Unity版本:2019.3
前文地址:关于Addressable资源文件测试记录和AssetBundle资源更新对比(四)

这篇就测试一些Addressable的Api,看看是否能做成AssetBundle一样的开始更新全部内容的效果。会优先测试一些别人给出的参考api。

//测试方法组1
 Addressables.CheckForCatalogUpdates();
 Addressables.UpdateCatalogs()

该方法只会更新Catalog文件。(即下图文件)

另外测试还出现了一个问题,Addressable.CheckForCatalogUpdates这个API返回的更新目录长度永远是0;而且缓存没有生成Catalogs文件(即下图文件),这时候就需要检测你的远程路径是否配置正确或者远程目录是否有对应资源包。

这点有点不恰当,因为你如果不需要更新的话返回的也是0;没什么好的办法避免。只能做事的时候注意一下咯。

在这里插入图片描述
需要注意的是
1:如果你在Addressables.UpdateCatalogs()期间加载使用远程资源的话,会在该方法执行完成后才执行。
2:本地catalogs的缓存是最新的内容的话不会更新,即可以通过这个api得知是否需要更新内容。

//测试方法组2
Addressables.GetDownloadSizeAsync(lable)
Addressables.DownloadDependenciesAsync(lable)

该方法会更新被指定标签所标记的资源。
也是其他相关教程中给出代替AssetBundle更新流程一种方案。但需要自己做lable管理。来指定更新的内容。

从测试结果来看,不通过lable而通过获取所有keys,然后通过(下图所示方法)来更新所有内容更方便一些。并且也只会更新变更的资源。但在Addressable版本1.16.10中已经显示弃用了。

不过,在此测试之时,我仍然可以通过Addressables.ResourceLocators获取到所有的keys然后通过以下方法来进行开始更新所有资源的操作。

在这里插入图片描述

即,通过对比Catalog来确定是否需要更新。
然后通过更新所有远程资源来进行游戏开始加载所有资源的操作是可行。

但是,需要说明一点的是,即使你没有成功更新到资源(即你想开始加载所有资源,但并没有加载成功或你只更新了Catalogs文件并没有更新资源的操作),只要你的Catalogs文件更新,在使用到对应资源的时候(且网络没有问题),仍然会自动下载和缓存对应的资源文件。

以上。

后续会贴一些整个资源更新流程的代码和测试一些与代码热更相关的一些操作。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值