1、粗谈
Assetbundle是unity资源管理的核心并且存在着很多坑,如何将某些资源合理的规划分包将影响到内存以及热更包体大小,市面上不同项目有着不同的策略,合理的分包设计要从项目实际情况出发来决定。
2、分享(这篇文章简略的分享下本人在实作的一个方案)
前置知识:unity在打包某个资源a到A包时,如果被依赖的资源b我们没有主动将他设置成其他包,那么a和b会最终进入到同一个A的AB里,比较坏的情况是c也依赖了b,我们把c打进C时,b也会有一份存到C的AB中。因此根据这种情况通常有两种方案
1:官方以及部分项目一般是以如根据实体来合包、根据资源的通用性合包等,这样需要人工深度介入并且由于在调用buildassets后会因为自动关联资源到AB造成较多的冗余
2:根据主资源构造有向无环图打包(本人实作的方案):
优点:
1、可以保证资源在ab内的分包为0冗余,对于大的项目资源总体上相对来说具备一定优势,
2、热更也可以做到不需要人工参与并且热更包大小从理论上可以达到最小。
3、只需要收集主资源,可以选择性的控制由程序根据目录直接设定或者根据策划配置的资源表来操控。
缺点:
1、自动解析带来的粒度会更细,AB包头内存占用会增加
2、需要较为严谨的实现,实作过程中遇到不少坑的地方,如获取资源依赖的接口就可能遇到不是所期望的,具体还需要对引擎有一定了解才行