U4S4L13——资源更新

资源更新

当项目正式发布后,对于远程加载的资源,
我们可以通过改变资源服务器上的AB包内容来达到更新游戏的目的
Addressables会自动帮助我们判断哪些资源更新了,并加载最新的内容

远程资源包时整包更新还是局部更新,取决于Content Update Restriction内容更新限制参数
可以根据自己项目的实际情况选择具体使用哪种方式即可

一定记住 更新当前版本的小内容 都是通过更新以前版本来生成AB包 而不是重新打包构建
如果要设计重新打包构建了 那就必须重新发布一次应用程序(PC:exe,Android:apk等等)

image

内容更新限制参数回顾

在组设置中有一个内容更新限制的设置:Content Update Restriction

image

  • Can Change Post Release:
    可以改变发行后内容,该模式不移动任何资源,如果包中的任何资源发生了更改,则重新构建整个包
  • Cannot Change Post Release:
    无法改变发布后内容,如果包中任何资源已经改变,
    则[检查内容更新限制]工具会将其移动到为更新创建的新组中。
    在进行更新构建时,从这个新组创建的AssetBundles中的资产将覆盖现有包中的版本。

整包更新

组的Content Update Restriction设置为 Can Change Post Release
整包更新指,某一个分组的资源发生变化后,我们需要将其整体进行打包

这种方式比较适用于大范围资源更新时使用,
坏处是,玩家需要下载的内容较大,比较耗时耗流量

更新测试:

在我们修改了某个包内的内容后,我们不应该直接重新打包,而是在原有的包的基础上更新
因此Build需要选择Update a Previous Build

image

然后在弹出的文件选择窗口上,选择AddressableAssetsData/Windows/addressable_content_state.bin文件
(具体哪个文件夹取决于平台)

image

这就是存储之前版本打出来的包的消息的文件,我们需要读取这个文件才能完成包的更新

更新包之后,就会出现一个新的完整的AB包文件,之后程序运行会加载这个更新的eAB包文件

image

注意:Unity自带的 资源服务器模拟工具有问题 有的时候明明开启了服务 但是加载不成功
我们干脆就使用第三方工具来搭建我们的模拟本地资源服务器(2020及以前存在的问题,2021版实测不会出现问题)

局部更新

组的Content Update Restriction设置为 Cannot Change Post Release
局部更新指,当组中有资源发生变化时,我们可以单为发生变化的内容生成AB包

之后使用该资源时,Addressables会自动加载最新的内容
它相对整包更新来说,更节约时间和流量

更新测试:

在我们修改了某个包内的内容后,我们不应该直接重新打包,
我们首先需要选择Tools - Check for Content Update Restrictions 来检查更新限制

image

然后在弹出的文件选择窗口上,选择AddressableAssetsData/Windows/addressable_content_state.bin文件
(具体哪个文件夹取决于平台)

image

勾选需要更新的资源,然后选择Apply Changes

image

然后,更新内容的资源会被移到Content Updates内,它的打包路径与原来的包内的路径一致

image

然后再Build,选择Update a Previous Build

image

然后在弹出的文件选择窗口上,选择AddressableAssetsData/Windows/addressable_content_state.bin文件
(具体哪个文件夹取决于平台)

image

更新包之后,就会出现一个新的contentupdateAB包文件,之后程序运行会加载这个contentupdateAB包文件

image