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

这篇具有很好参考价值的文章主要介绍了[游戏开发]Unity Addressable打包策略。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

Addressables的基础看这篇文章

Addressable全教程

最近公司在写新的框架,决定放弃老的bundle打包方式,使用Addressable,因此我要捋顺新的打包方案,并且解决所有疑问。

正文

打包的最终目的是:build出一堆Bundle文件,而哪些因素会影响出包结果,总结一下有3个关键因素和1个非关键因素

关键因素1:AssetGroups自定义AssetGroup

addressable 增量打包,项目管理,开发心得,unity,游戏开发,Powered by 金山文档

关键因素2:BundleMode

addressable 增量打包,项目管理,开发心得,unity,游戏开发,Powered by 金山文档

关键因素3: 自定义Label

addressable 增量打包,项目管理,开发心得,unity,游戏开发,Powered by 金山文档

一张图就可以看懂这三项如何使用

addressable 增量打包,项目管理,开发心得,unity,游戏开发,Powered by 金山文档
addressable 增量打包,项目管理,开发心得,unity,游戏开发,Powered by 金山文档

修改该Group的 Bundle Mode

之前是Pack Together,现在修改成Pack Together By Label,执行增量打包

addressable 增量打包,项目管理,开发心得,unity,游戏开发,Powered by 金山文档

可以发现老的bundle文件还在,但增加了新的三个bundle文件,根据名字很明显可以看出,all是老的bundle,代表没有Label,而新的bundle根据label分别创建了三个bundle,分别是无label模式,还有两个texture_1 texture_2。


【提问】如果把不同的Group内的资源设置成相同的Label是否会打进同一个bundle,测试发现,不会进入同一个bundle

addressable 增量打包,项目管理,开发心得,unity,游戏开发,Powered by 金山文档
addressable 增量打包,项目管理,开发心得,unity,游戏开发,Powered by 金山文档

非关键因素1:Group的一项设置> Content Update Restriction

为何前三项是关键因素,而这一项是非关键因素?

答:该选项在首次打包前就要确定好要选择哪个,以后增量打包不能变,变了会出错(除非是完整出包),所以说包的内容在不断变化,但该选项不能变。热更资源就选动态资源或不勾选Prevent Updates,用默认选项。如果是极少热更的资源可以设置为静态。

老版本的Addressable有两个选项

Cannot Change Post Release:静态资源

Can Change Post Release:动态资源

addressable 增量打包,项目管理,开发心得,unity,游戏开发,Powered by 金山文档

新版本

addressable 增量打包,项目管理,开发心得,unity,游戏开发,Powered by 金山文档

Prevent Updates是否阻止更新

请注意!!!

无论是新版本还是老版本,首次打包一定要确定好这个Group的Content Update Restriction选项并且在以后的版本中不允许更改,除非以后要再次完整的打包才可以更改。下面做个测试,看看Content Update Restriction到底有什么用

默认情况下是不勾选Prevent Updates或Can Change Post Release:动态资源

如果勾选了Prevent Updates或者是使用了Cannot Change Post Release:静态资源,资源发生改变并且执行增量打包时,你会看到Addressables Groups界面各种黄灯警告

addressable 增量打包,项目管理,开发心得,unity,游戏开发,Powered by 金山文档

Unity会提示你需要把改变的资源移动到一个新的Group中,并且你可以自己定义该Group的名字

addressable 增量打包,项目管理,开发心得,unity,游戏开发,Powered by 金山文档

当你点击ApplyChanges后,被警告的资源就会跑到这个新的Group中,如下图所示。

addressable 增量打包,项目管理,开发心得,unity,游戏开发,Powered by 金山文档

官方建议我们把项目中不常改动的资源设置为静态资源


打包粒度控制

接下来要考虑的问题是,Bundle的粒度要如何控制,假设我把所有资源放到一个Group中,那一个微小的改动就要下载整个bundle包,这肯定是不科学的。

那可否让每一个资源独立成一个Bundle,虽然这么做可行,但是考虑到效率也是不建议这么做的。颗粒度过小要考虑到IO发烫的问题。

有了上面两个疑问,那解决方案就比较清晰了,方案是:有的资源独立一个bundle,有的资源按文件夹打成一个bundle。被多个资源引用的公共资源,按文件夹打成一个bundle或每个资源独立一个bundle。

疑问:哪些资源需要按文件夹打包,哪些资源要独立一个bundle?

先来看看所有要打包的东西有哪些:

Atlas、Sprite、Lua脚本、Shader、Setting(Unity序列化Asset)、txt配表或者bytes配表数据、视频、音频、字体、预设(3D角色、特效、2DSpine、Live2D)

打包资源就是上述文件,而怎么区分用哪种策略呢

类型

是否依赖其他文件

以文件/文件夹打包

纯被动依赖

引用文件

Atlas

文件

Sprite

文章来源地址https://www.toymoban.com/news/detail-582318.html

到了这里,关于[游戏开发]Unity Addressable打包策略的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Unity HybridCLR + Xlua + Addressable 要点记要

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

    2024年02月09日
    浏览(49)
  • Unity 如何基于addressable来做资源管理

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

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

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

    2024年02月03日
    浏览(49)
  • Unity 之 Addressable可寻址系统 -- 资源热更新 -- 进阶(四)

    概述:Unity可寻址系统的资源热更是我遇到过最简单的热更方式了。只需修改资源组然后发布资源热更即可。本篇文章就来为讲解AA的资源热更,并通过CCD实现资源热更完整流程。 Addressables 将资源的引用和打包分开处理,可加快运行模式下和运行版本的项目迭代。系统将资源

    2023年04月08日
    浏览(77)
  • Unity 之 Addressable可寻址系统 -- 资源加载和释放 -- 进阶(二)

    概述:本篇文章从资源加载的方式和具体示例演示,为大家介绍可寻址资源系统的资源加载和资源释放。 同步异步相关概念: 同步:是指一个进程在执行某个请求的时候,如果该请求需要一段时间才能返回信息,那么这个进程会一直等待下去,直到收到返回信息才继续执行

    2024年02月02日
    浏览(45)
  • Unity 之 Addressable可寻址系统 -- 资源远程加载 | 资源预下载 -- 进阶(三)

    概述:实现方式是使用Unity的可寻址系统结合云资源分发(AA+CCD)的形式。本篇文章就来为讲解CCD的使用介绍,以及AA+CCD使用的示例。 在Hub界面的游戏云选项,可以看到官网介绍入口: CCD:全称Cloud Content Delivery,译为:云端资源分发。 Unity 推出首个用于实时游戏更新的端到端

    2024年01月16日
    浏览(42)
  • Unity编辑器从PC平台切换到Android平台下 Addressable 加载模型出现粉红色,类似于材质丢失的问题

    Unity编辑器在PC平台下使用Addressable加载打包好的Cube,运行发现能正常显示。 而在切换到Android平台下,使用Addressable时加载AB包,生成Cube对象时,Cube模型呈现粉红色,出现类似材质丢失的问题。如下图所示。 这是因为GraphicAPI不同导致的。编辑器默认用的是PC平台的GraphicAPI。

    2024年02月08日
    浏览(48)
  • Addressable 异步加载场景并获取加载进度

    一开始用PercentComplete函数获取加载进度,发现每次都是从0.85开始计算,不准,官方文档解释:“ PercentComplete 将反映总体操作的进展情况,而不会准确地表示仅下载百分比或加载到内存中的百分比。 ” ,“ 要获得准确的下载百分比,请使用GetDownloadStatus()。” GetDownloadStatu

    2024年02月12日
    浏览(40)
  • [游戏开发][Unity]Assetbundle打包篇(1)打包流程介绍

    打包与资源加载框架目录 先捋一下打AB包的整体思路,首先,Unity4.6版本之后就使用了全新的打包接口 无论是全新打包还是增量打包都是使用这个API,所以一切的一切,都要围绕这个API开始讲起。 该API有四个参数 string outputPath AssetBundleBuild[] builds BuildAssetBundleOptions assetBundle

    2024年02月10日
    浏览(40)
  • [游戏开发][Unity]Assetbundle打包篇(2)打包资源配置篇

    打包与资源加载框架目录 可视化配置的方式有很多种,Json、XML、以及Unity内置的ScriptableObject序列化 配置文件里要有哪些内容呢,很显然,最重要的就是目标文件路径,其次是权重类型,权重类型有:必要打包型、被引用打包型、忽略类型。为何会有忽略类型呢,是因为我们

    2024年02月09日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包