U4S4L13——资源更新
U4S4L13——资源更新
资源更新
当项目正式发布后,对于远程加载的资源,我们可以通过改变资源服务器上的 AB 包内容来达到更新游戏的目的
Addressables 会自动帮助我们判断哪些资源更新了,并加载最新的内容
远程资源包时整包更新还是局部更新,取决于 Content Update Restriction 内容更新限制参数,可以根据自己项目的实际情况选择具体使用哪种方式即可
一定记住 更新当前版本的小内容 都是通过更新以前版本来生成 AB 包,而不是重新打包构建,
如果要设计重新打包构建了,那就必须重新发布一次应用程序(PC:exe,Android:apk等等)
内容更新限制参数回顾
在组设置中有一个内容更新限制的设置:Content Update Restriction
-
Can Change Post Release:可以改变发行后内容
该模式下不移动任何资源,如果包中的任何资源发生了更改,则重新构建整个包
-
Cannot Change Post Release:无法改变发布后内容
如果包中任何资源已经改变,则[检查内容更新限制]工具会将其移动到为更新创建的新组中。
在进行更新构建时,从这个新组创建的 AssetBundles 中的资产将覆盖现有包中的版本。
整包更新
组的 Content Update Restriction 设置为 Can Change Post Release
整包更新指,某一个分组的资源发生变化后,我们需要将其整体进行打包
这种方式比较适用于大范围资源更新时使用,坏处是,玩家需要下载的内容较大,比较耗时耗流量
更新测试:
在我们修改了某个包内的内容后,我们不应该直接重新打包,而是在原有的包的基础上更新
因此 Build 需要选择 Update a Previous Build
然后在弹出的文件选择窗口上,选择 AddressableAssetsData/Windows/addressable_content_state.bin
文件
(具体此文件位于哪个文件夹取决于平台)
这就是存储之前版本打出来的包的消息的文件,我们需要读取这个文件才能完成包的更新
更新包之后,就会出现一个新的完整的 AB 包文件,之后程序运行会加载这个更新的 AB 包文件
注意:Unity 自带的 资源服务器模拟工具有问题,有的时候明明开启了服务 但是加载不成功
我们干脆就使用第三方工具来搭建我们的模拟本地资源服务器(2020及以前存在的问题,2021版实测不会出现问题)
局部更新
组的 Content Update Restriction 设置为 Cannot Change Post Release
局部更新指,当组中有资源发生变化时,我们可以单为发生变化的内容生成AB包
之后使用该资源时,Addressables 会自动加载最新的内容,它相对整包更新来说,更节约时间和流量
更新测试:
在我们修改了某个包内的内容后,我们不应该直接重新打包,
我们首先需要选择 Tools - Check for Content Update Restrictions 来检查更新限制
然后在弹出的文件选择窗口上,选择 AddressableAssetsData/Windows/addressable_content_state.bin
文件
(具体此文件位于哪个文件夹取决于平台)
勾选需要更新的资源,然后选择 Apply Changes
然后,更新内容的资源会被移到 Content Updates 内,它的打包路径与原来的包内的路径一致
然后再 Build,选择 Update a Previous Build
然后在弹出的文件选择窗口上,选择 AddressableAssetsData/Windows/addressable_content_state.bin 文件
(具体此文件位于哪个文件夹取决于平台)
更新包之后,就会出现一个新的 contentupdate AB 包文件,之后程序运行会加载这个 contentupdate AB 包文件