Addressable -- 有关热更新

Addressable – 有关热更新

标题Patch的不同操作

  • Default Build Script:
    • 首次资源打包,使用Default Build Script。那么当前的Addressable的一些资源数据会存储到addressable_content_state.bin文件中,这个文件是存在包体中的。如果后续使用new build的时候,使用老包的用户是没有办法获得这些更新数据的,就会出现加载不到新的资源的现象
  • Update a Previous Build操作的原理
    • 任何已更改的本地资产将永远不会在用户的设备上使用。
    • 如果用户已经缓存了一个nonstatic非静态包,那么他们将需要重新下载该包,包括未更改的资产(例如,在这个实例中,AssetY 和 AssetZ)。 理想情况下,用户没有缓存包,在这种情况下,他们只需要下载新的 Remote nonstatic 包。
    • 如果用户已经缓存了 Remote Static远程静态包,那么他们只需要下载更新的资产(在这个实例中,是content update group中的AssetL )。 在这种情况下,这是理想的。 如果用户没有缓存该捆绑包,他们必须通过content update group下载新 AssetL,以及通过未触及的 Remote static 捆绑包下载现已失效的 AssetL。 无论初始缓存状态如何,在某个时刻,用户的设备上都会有不存在的 AssetL,尽管它从未被访问过,但它会无限期地缓存下去(old 的 L 包会一直存在)

在这里插入图片描述

区分catalog 和 Addressables_content_state.bin 文件作用

  • Catalog 作用:资源表,对应addressable的所有资源。主要是做检查boundle的更新
    • 游戏在用Addressable加载资源的时候会根据资源地址检测资源在哪个bundle,然后看看当前bundle是否存在,不存在就上网下,然后检查bundle自身的hash直和catalogs里的是否一致,一致就直接读取本地资源,不一致就上网下,下不到就报错,你有老资源也不会读取。它只认资源表
    • 当你打开build remote catalogs,就支持了网络更新资源表
    • 不打开build remote catalogs, 可以下网络的资源但是不能热更,这里说的是出包的之后,就只能通过本地的catalogs下载固定的资源,并且下的时候还会校对hash,crc,你替换资源也没用,尝试关闭hash,crc会出错。所以不用想着用addressable系统去更新资源表里没有的资源了,要想那么做,只能另外用assetbundle
    • 如果你不激活disable catalog update on startup,那么每当你第一次初始化Addressable. InitializeAsync 的时候,(如果你不调用 InitalizeAsync,那你用Addressable的任意功能依然都会自动初始化)会自动上网拉取资源表,如果你关闭自动拉取,那么你得用CheckForCatalogUpdates和UpdateCatalogs去主动下载资源表。
  • Addressables_content_state.bin :文件包含Addressables系统中每个StaticContent资源组的哈希和依赖项信息。

资源释放

  • Resources.UnloadUnusedAssets : 会释放Addressable中没有引用的资源
  • Addressables.Release : 减少当前的资源的引用计数,当这个引用计数为0的时候,才会释放当前的资源
欢迎一起讨论哦😯

QQ群 :665343902

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值