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

文章详细介绍了Unity中的Addressable资源管理系统,包括AssetGroups的自定义、BundleMode的选择、Label的运用,以及ContentUpdateRestriction设置对增量打包的影响。作者强调了打包目标是生成Bundle文件,并讨论了如何通过控制这些因素来优化打包策略,避免无谓的资源更新,并提出了粒度控制的考虑,如按需将资源分组打包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Addressables的基础看这篇文章

Addressable全教程

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

正文

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

关键因素1:AssetGroups自定义AssetGroup

关键因素2:BundleMode

关键因素3: 自定义Label

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

修改该Group的 Bundle Mode

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

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


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


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

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

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

老版本的Addressable有两个选项

Cannot Change Post Release:静态资源

Can Change Post Release:动态资源

新版本

Prevent Updates是否阻止更新

请注意!!!

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

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

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

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

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

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


打包粒度控制

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

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

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

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

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

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

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

类型

是否依赖其他文件

以文件/文件夹打包

纯被动依赖

引用文件

Atlas

文件

Sprite

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Little丶Seven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值