unity3d assetbundle打包策略
由于assetbundle打包存在依赖的问题,所有资源要进行合理的分包
零、代码
代码都放在本地,包括NGUI等插件的代码、shader代码(内置的shader无需打包,而自定义的shader还是需要打包,否则每个依赖这个shader的游戏物体被打包的时候都会将shader代码打包到自己的assetbundle中去)
零点五、自定义shader
因为自定义的shader在启用CollectDependencies 打包时也会被分别打包进assetbundle中,所以为了避免空间的浪费,可以考虑将自定义shader打包成一个基础依赖包
一、单位
单位的模型贴图、动画一起打包
二、UI
1、公用图集一起打包(UIAtlas.prefab、UIAtlas.mat、UIAtlas.png)在进入游戏的时候加载并且常驻内存
2、(依赖公共图集)面板图集和面板预设一起打包 在切换场景的时候加载场景所需要的面板图集
三、场景
1、场景公用的贴图和预设一起打包
一种风格的场景有一个公用依赖资源包
2、场景独有的贴图和预设,以及场景的光照贴图、寻路数据一起和场景文件打包
切换场景的时候先加载场景公用包,在加载场景的时候再loading场景先加载公用包、再加载场景本身的包,然后Application.LoadLevelAsync切场景
公共资源包打包的使用可以使用BuildAssetBundle 而场景打包使用 BuildStreamedSceneAssetBundle
四、特效
特效单独打包,似乎会造成包很多的结果,还没有想到特效好的解决方案
ps:打包依赖资源的时候要使用
BuildAssetBundleOptions.CollectDependencies 否则引用关系会丢失