Unity构建详解(5)——SBP的Bundle组装

【Bundle的组成】

Bundle里包含Asset、Asset由Object组成,Object由Type组成。前文说了Type由MonoScript的方式处理,这里我们需要从Object看起。

Asset由Object组成,Object可能依赖其他Asset中的Object,Asset之间的依赖本质是由Object之间的依赖造成的。而Bundle是由Asset组成的,确定Bundle包含哪些Asset,实际上就是要确定Asset要有哪些Object,IncludeObject必需要有,而ReferencedObjects不一定会有。

因此,Object会依赖其他Object,所以Asset会依赖其他Asset,进而Bundle依赖其他Bundle。

我们组建Bundle有两个目标和一套规则。

两个目标是:

  • 目标1:一个Asset尽可能只在一个Bundle内,不在多个Bundle内
    • 为保证这个目标,需要做剔除依赖Object的操作,不同的Asset依赖的Object不能相同
  • 目标2:一个Asset及其依赖的Asset尽可能多的在少数Bundle内,不在多个Bundle内
    • 为了保存这个目标,需要统计Asset被依赖的次数和深度,得到依赖相关性

规则有:

  • 规则1:手动指定Asset在某个Bundle时一定要在某个Bundle内
  • 规则2:业务逻辑上属于同一个实体的Asset放在同一个Bundle内
    • 例如一个角色的纹理、模型和动画打包在一起
  • 规则3:场景内共享的资源放在同一个Bundle内
  • 规则4:不同类型的资源放在同一个Bundle内
  • 规则5:零散的很小的资源放在同一个Bundle内
  • 规则6:各种结合业务实际情况的自定义规则

【GenerateBundlePacking】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值