AssetBundle打包策略

来源:互联网 发布:淘宝上的摩托车怎么样 编辑:程序博客网 时间:2024/06/06 00:14

AssetBundle的用途

AB包是把指定的资源打包压缩后可以在Unity中动态的进行加载,AB包主要是用在热更时更新资源的,

打包策略的原因

AssetBundle打包的资源是存在依赖关系的,你打包了这个资源依赖于另一个资源他会自动的把依赖资源也打进这个包,如果不注意打包的策略,就会发生同一个资源被重复的打包,产生资源冗余,比如你要把不同的UI类型分开打包,他们都会把自己使用的图集都打到AB包中,这样直接进行打包,那这个贴图就会被打入AB包两次,很浪费资源,所以在打包的时候要注意打包策略

基本的打包策略

  • UI公用资源包打成一个包
  • 模型动画可以根据角色来分开打包
  • 特效部分可以打入一个包里
  • 声音部分可以打到一个包里

收集依赖关系

打包前先使用AssetDatabase.CollectDependencies遍历所有资源收集他们间的依赖关系,在后面打包的时候按照每个资源被依赖的深度进行分级,先打包级别较低的,如shader,script这些资源被其他资源依赖但不会依赖别的资源,级别最低。如prefab依赖前面的所有资源,级别最高,放在最后打包。一般是按照资源的类型(prefab,mesh,animator,texture,script…)进行分级。即使这样按类型分好级后仍是不够的,因为同一级的资源也有可能产生相互依赖的关系。比如使用NGUI,一个面板prefab依赖于几个挂UIAtlas的prefab,这种同级的依赖需要用深度优先遍历对他们进行排序以确定依赖关系。这个依赖关系使用序列化文件记录下来,供后面加载包的时候先加载所有被依赖的包使用。每次更新的时候这个依赖关系的序列化文件也要同其他资源一起更新。
原创粉丝点击