Unity AssetBundle几点关注
依赖关系
假如a包依赖b包,b包又依赖c包,那么a的依赖关系是b包还是 bc两个包呢,通过实验知道,a只是依赖b包,加载b包的时候需要加载c包,也就是说加载的时候需要递归加载。
manifest 文件
打包的时候会生成很多manifest文件,游戏发布的时候只需要发布总的那个manifest文件就好了,里面会记录各个包的依赖关系,而且依赖关系是相对打包的输出目录的,具体包的manifest文件没有必要发布,如果要验证具体包的hash仍然可以通过总manifest文件获得具体包的hash,所以不用发布具体包的manifest文件。
BuildPipeline.BuildAssetBundles
通过逻辑组织,只调用这个函数一次是最好的。调用多次会生成很多总包的manifest文件,会打乱包的组织逻辑。
差异包
差异包生成是建立在ab包根据逻辑粒度划分出来的,逻辑粒度如果非常大那么差异包效果就会降低,相对的,逻辑粒度小ab包数量过于庞大,就会造成游戏加载ab包数量过多,管理混乱。
一般来说一个逻辑粒度是一个ab包,典型的:
UI基本图片包
一个npc就是一个包
一个地图
…