由於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 否則引用關系會丟失