Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

这篇具有很好参考价值的文章主要介绍了Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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


一,本地实现资源热更

1.1 资源热更概念

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

打包出来的资源目录:
Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

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

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

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


1.2 具体实现步骤

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

步骤如下:

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

1.3 本地资源热更

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

  1. 准备两个预制体,我这里准备了两个不同材质的Cube
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

  2. 创建一个资源组,资源组命名为:HotUpdate Group。将一个预制放到组中,资源Key命名为:UpdateCube
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

  3. 编写代码加载资源组中,将其生成到场景中。创建一个空物体将代码挂载,运行查看效果:
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四) 示例代码如下:
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

  4. 资源地址设置,打资源包
    设置资源地址:将本地地址都修改为自定义。注意地址要在根目录下开始写(Windows就在盘符开始)。
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)
    选中2步骤创建的HotUpdate Group资源组,在Inspector面板上设置为Local,此时下面的路径就变成上面设置的了:
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)
    打资源包在Groups面板,Build -> New Build -> Default Build Script
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)
    打包出来的:
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

  5. 发布查看效果,可以成功加载设置的预制:
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

  6. 将资源组中的预制替换,发布本地资源热更:
    将需要替换的预制也放到刚刚的资源组中,然后将Key修改到和被替换的一样
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)
    移除被替换的资源:(注意:这里的资源和2步骤中的Key保持一直,因为代码是根据这个Key来加载的)
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)
    发布资源热更:Groups面板 Build ->Update a Previous Build
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)
    点击后弹窗选择一个.bin文件(找到你的要发布的平台文件夹)
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)
    发布完成后,可以在刚刚的文件夹下看到两个前缀为hotupdategroup的资源组了
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

  7. 再次运行,可以看到白色Cube变为了黑色的:
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

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

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


二,AA + CCD实现资源热更

2.1 工程设置

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

  1. 创建桶
    在后台创建一个新的桶来实现资源热更:我这里命名为:AA+CCD-ReGeng:
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

  2. 打包设置:
    设置远程加载路径:
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

  3. 打包资源:
    设置完成后,进行资源打包。
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)
    注意此时的资源组是远程加载的
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

  4. 上传资源
    选择刚刚创建的AA+CCD-ReGeng桶,然后选择3步骤中打包的资源,点击Sync上传:
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

  5. 上传版本
    点击New新建一个版本,然后Load同步到后台
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

  6. 上传完成后,可以在后台看到刚刚上传的版本
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

  7. 此时打包Apk安装到手机上,可成功加载远程的黑色Cube就可以了
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)


2.2 实现热更

  1. 修改资源包内容
    这里是将黑色的“HotUpdateCube”,修改为白色的Cube预制。(注意可寻址地址不要)
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

  2. 生成热更补丁
    Build选项下选择,Update a Previous Build,点击之后会弹窗
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)
    选择需要热更的平台的addressables_content_state.bin文件:
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)
    这个文件就在工程的AddressableAssetsData文件夹下,是每次打包资源生成的:
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

  3. 上传热更补丁
    和上传资源步骤基本一致,1选择文件夹,2上传资源,3新建版本,4发布资源
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

  4. 检查资源状态
    上传完成后,可以到后台看到资源的版本信息了:
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

  5. 重启Demo,实现热更效果,Cube变为白色的:
    Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)文章来源地址https://www.toymoban.com/news/detail-401290.html

到了这里,关于Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Unity 如何基于addressable来做资源管理

    一、什么是Addressable系统 Addressable系统是Unity 2018.3版本中推出的一种资源管理方案,它可以帮助我们更好地管理游戏中的资源。在以往的游戏开发中,我们通常使用Resources来进行资源加载,但是这种方式存在很多问题,比如加载速度慢、内存占用高等。Addressable系统可以解决这

    2024年02月16日
    浏览(11)
  • Unity最新热更新框架 hybridclr_addressable

    GitHub:YMoonRiver/hybridclr_addressable: 开箱即用的商业游戏框架,集成了主流的开发工具。将主流的GameFramework修改,支持Addressable和AssetBundle,已完善打包工具和流程。 (github.com) # 新增GameFramework Addressables 开箱即用 # 新增循环列表 ### UnityGameFramework   **此框架参考:**    `GameFramework

    2024年02月03日
    浏览(12)
  • Unity资源热更新框架

    Unity资源热更新框架

    什么是热更新?         游戏上线后,玩家下载第一个版本(1G左右或者更大),在之后运营的过程中,如果需要更换UI显示,或者修改游戏的逻辑,这个时候,如果不使用热更新,就需要重新打包,然后让玩家重新下载,很显然体验非常不好。 热更新可以在不重新下载客

    2024年02月10日
    浏览(7)
  • Unity AssetBundles资源管理和热更新

    Unity AssetBundles资源管理和热更新

    项目中的做法,在项目中一般会把资源按照文件目录去划分资源,以文件路径的名字作为AB的名字,一般都是把资源的这些放到预处理中。 一般会分为几个类型,比如把单个文件夹下的每个资源进行打bundle,把单个文件夹下的所有资源打成bundle,还有自定义bundle名字的类型啥

    2024年01月21日
    浏览(7)
  • 【Unity开发必备】100多个 Unity 学习网址 资源 收藏整理大全【持续更新】

    【Unity开发必备】100多个 Unity 学习网址 资源 收藏整理大全【持续更新】

    众所周知,工欲善其事必先利其器,有一个好的工具可以让我们事半功倍,有一个好用的网站更是如此! 但是好用的网站真的太多了,收藏夹都满满的(但是几乎没打开用过😁)。 所以本文是对Unity相关的网站进行一个资源整合,可以让我们更方便的去学习Unity的更多知识内容

    2024年02月16日
    浏览(11)
  • Unity 热更新技术 |(七)完整热更新实战案例学习使用,包括资源热更新及代码热更新【文末书】

    Unity 热更新技术 |(七)完整热更新实战案例学习使用,包括资源热更新及代码热更新【文末书】

    🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN 🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 🌲Unity实战100例专栏推荐:Unity 实战100例 教程 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📆 未来很长

    2023年04月17日
    浏览(10)
  • [游戏开发]Unity Addressable打包策略

    [游戏开发]Unity Addressable打包策略

    Addressables的基础看这篇文章 Addressable全教程 最近公司在写新的框架,决定放弃老的bundle打包方式,使用Addressable,因此我要捋顺新的打包方案,并且解决所有疑问。 打包的最终目的是:build出一堆Bundle文件,而哪些因素会影响出包结果,总结一下有3个关键因素和1个非关键因

    2024年02月17日
    浏览(12)
  • Unity之Addressable使用注意事项

    Unity之Addressable使用注意事项

    Profile文件中配置资源构建路径和资源首次加载路径,资源如何设置了缓存,在首次加载之后会将再用缓存在缓存目录,后面将直接从缓存目录中读取,方便项目发包时候进行使用 AddressableAssetSettings文件 DisableCatalogUpdateOnStartup 勾选改选项,禁止自动更新,项目资源下载一般需

    2024年02月08日
    浏览(9)
  • Unity热更模块基于 HybridCLR + Addressable

    Unity热更模块基于 HybridCLR + Addressable

    代码地址: GitHub - ManoKing/FFramework: 基于HybridCLR + Addressable的热更新框架,提供例子基于QFramework+URP开发 基于HybridCLR + Addressable的热更新框架,提供例子基于QFramework+URP开发 - GitHub - ManoKing/FFramework: 基于HybridCLR + Addressable的热更新框架,提供例子基于QFramework+URP开发 https://github.

    2023年04月14日
    浏览(8)
  • Unity HybridCLR + Xlua + Addressable 要点记要

    Unity HybridCLR + Xlua + Addressable 要点记要

    老工程原本是C#,想做热更,于是接入了Xlua和Addressable。由于工程老,人手也不够,只是新代码使用Xlua,老功能(尤其是核心战斗还是C#)。大半年后觉得并不能达到预期需求。于是通过再接入Hybrid来解决最终问题。 HybridCLR 的接入,以及原理这里就不重复说明了,在官网上有

    2024年02月09日
    浏览(8)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包