Unity 之 Addressable可寻址系统 -- 资源热更新

Posted 陈言必行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 之 Addressable可寻址系统 -- 资源热更新相关的知识,希望对你有一定的参考价值。

可寻址系统远程加载 -- 资源热更新 -- 进阶(四)

概述:Unity可寻址系统的资源热更是我遇到过最简单的热更方式了。只需修改资源组然后发布资源热更即可。本篇文章就来为讲解AA的资源热更,并通过CCD实现资源热更完整流程。


一,本地实现资源热更

1.1 资源热更概念

Addressables 将资源的引用和打包分开处理,可加快运行模式下和运行版本的项目迭代。系统将资源合并为一个个的 Asset Bundles(资源包),一种可在运行时分发、加载资源的 Unity 专有文件结构,然后生成一个内容目录来辅助运行时的内容加载与资源跟踪。

打包出来的资源目录:

Addressable的资源热更,特别适合那种边下边玩的游戏,因为它不是在游戏刚进去时更新完所有资源。

我们把下载AB的实现交给了Addressable,它的实现是当你在加载资源时找到这个资源的ab包,然后通过UnityWebRequestAssetBundle判断该AB包是不是已经下载如果下载那么直接从缓存目录加载,不然就下载到缓存目录再加载。所以我们要先加载资源才会去下载ab包。

若需要进入游戏就下载所有资源可以参考我上一篇文章写的与下载工具类:
Unity 之 可寻址系统 - 资源远程加载 - 资源预下载 - 进阶(三)


1.2 具体实现步骤

先在本地模拟一下资源热更的流程吧。

步骤如下:

  1. 准备两个预制体
  2. 创建一个资源组,将一个预制放到组中
  3. 编写代码加载资源组中,将其生成到场景中
  4. 资源地址设置,打资源包
  5. 发布查看是否正常加载运行
  6. 将资源组中的预制替换,发布本地资源热更
  7. 再次运行查看是否更换

1.3 本地资源热更

按照上面的步骤操作一下:

  1. 准备两个预制体,我这里准备了两个不同材质的Cube

  2. 创建一个资源组,资源组命名为:HotUpdate Group。将一个预制放到组中,资源Key命名为:UpdateCube

  3. 编写代码加载资源组中,将其生成到场景中。创建一个空物体将代码挂载,运行查看效果:
    示例代码如下:

  4. 资源地址设置,打资源包
    设置资源地址:将本地地址都修改为自定义。注意地址要在根目录下开始写(Windows就在盘符开始)。

    选中2步骤创建的HotUpdate Group资源组,在Inspector面板上设置为Local,此时下面的路径就变成上面设置的了:

    打资源包在Groups面板,Build -> New Build -> Default Build Script

    打包出来的:

  5. 发布查看效果,可以成功加载设置的预制:

  6. 将资源组中的预制替换,发布本地资源热更:
    将需要替换的预制也放到刚刚的资源组中,然后将Key修改到和被替换的一样

    移除被替换的资源:(注意:这里的资源和2步骤中的Key保持一直,因为代码是根据这个Key来加载的)

    发布资源热更:Groups面板 Build ->Update a Previous Build

    点击后弹窗选择一个.bin文件(找到你的要发布的平台文件夹)

    发布完成后,可以在刚刚的文件夹下看到两个前缀为hotupdategroup的资源组了

  7. 再次运行,可以看到白色Cube变为了黑色的:

这就通过可寻址资源管理系统,实现本地资源热更了。其实联网热更也是一样的道理,只需要将上面配置加载资源地址修改为在网络加载,再将打包出来的资源上传到CDN上即可,下面通过Unity推荐的CCD实现一下联网热更。

若你看了上一篇文章CCD的使用,可以结合上面这个本地资源热更流程自己尝试一下联网热更。


二,AA + CCD实现资源热更

2.1 工程设置

使用CCD的准备工作,详情查看上一篇CCD的使用

  1. 创建桶
    在后台创建一个新的桶来实现资源热更:我这里命名为:AA+CCD-ReGeng:

  2. 打包设置:
    设置远程加载路径:

  3. 打包资源:
    设置完成后,进行资源打包。

    注意此时的资源组是远程加载的

  4. 上传资源
    选择刚刚创建的AA+CCD-ReGeng桶,然后选择3步骤中打包的资源,点击Sync上传:

  5. 上传版本
    点击New新建一个版本,然后Load同步到后台

  6. 上传完成后,可以在后台看到刚刚上传的版本

  7. 此时打包Apk安装到手机上,可成功加载远程的黑色Cube就可以了


2.2 实现热更

  1. 修改资源包内容
    这里是将黑色的“HotUpdateCube”,修改为白色的Cube预制。(注意可寻址地址不要)

  2. 生成热更补丁
    Build选项下选择,Update a Previous Build,点击之后会弹窗

    选择需要热更的平台的addressables_content_state.bin文件:

    这个文件就在工程的AddressableAssetsData文件夹下,是每次打包资源生成的:

  3. 上传热更补丁
    和上传资源步骤基本一致,1选择文件夹,2上传资源,3新建版本,4发布资源

  4. 检查资源状态
    上传完成后,可以到后台看到资源的版本信息了:

  5. 重启Demo,实现热更效果,Cube变为白色的:

以上是关于Unity 之 Addressable可寻址系统 -- 资源热更新的主要内容,如果未能解决你的问题,请参考以下文章

Unity 之 Addressable可寻址系统 -- 可寻址系统面板介绍 -- 入门

Unity 之 Addressable可寻址系统 -- 可寻址系统概念介绍 -- 入门

Unity 之 Addressable可寻址系统 -- 可寻址系统概念介绍 -- 入门

Unity 之 Addressable可寻址系统 -- 可寻址系统概念介绍 -- 入门

Unity 之 Addressable可寻址系统 -- 可寻址系统使用介绍 -- 入门

Unity 之 Addressable可寻址系统 -- 可寻址系统使用介绍 -- 入门