AssetBundle打包優化解決方式
阿新 • • 發佈:2017-06-23
輸出 編寫 整合 oca game light form local 名稱
第一階段:AssetBundle出一套解決方式
1、解決如今同一個資源打2個bundle的冗余問題
2、測試驗證節省資源的比率是多少
問題拆分
一、bundle反復
問 題 :同樣資源拆分問題?
解決方式:1、制作場景時將同樣部分分開
制作方法:將每一個場景同樣部分放到同一個文件夾,不同部分保留在場景中
打包方法:a、打成獨立的bundle,不同部分放到每一個場景中打成bundle
b、用xml記錄下每一個場景中公共部分的transform,bundle名稱、資源名稱、父節點信息
優 點:打包工具的實現方便、快捷
缺 點:制作時對美術有一定要求,尤其在加入新的場景
2、將場景中對象分為資源對象和骨架對象,資源對象用tag標記為Element。
資源對象:每個資源對象生成獨立的預設。形成新的公共的bundle。
骨架對象:和正常的場景打包一樣。
制作方法:每一個場景正常制作,將場景中對象分為資源對象和骨架對象。資源對象用tag標記為Element。
打包方法:a、直接對場景打包。打包時依據tag生成不同的bundle
b、用xml記錄每一個場景中每一個gameobject transform、bundle名稱、父節點信息
優 點:僅僅要設置tag,不需區分是否是公共資源
缺 點:打包工具的實現比較復雜
xml文件格式:
<Bundle name = "" count = "">
<Element name= "" parentname = "" localtran=",,,,,,,,,"> </Element>
<Element name= "" parentname = "" localtran=",,,,,,,,,"> </Element>
</Bundle>
綜上所說。我們將用方案2進行編寫並實現。
二、驗證百分比
解決方式: 節省資源百分比 = 1 - (上面兩種方式打bundle中的任一種bundle的大小/傳統方式bundle大小 *100%)。
一個場景時:
場 景:90001
比 較:1、傳統打bundle大小(一個文件) :90001.assetBundles:3.83MB
2、使用方案二打bundle大小(三個文件):90001.assetBundles :846KB
common_sub.assetBundles:3.39MB
90001.txt : 81KB
共 4.28MB
百分比:1 - 4.28 / 3.83 = -11.7%;
結 論:bundle大小與在場景中使用同樣資源對象數量無關,與文件多少有關
兩個場景時:
場景:90001 11001
比較:1、傳統打bundle大小(兩個文件): 90001.assetBundles : 3.83 MB
11001.assetBundles : 4.82 MB
共 8.65MB
2、使用方案二打bundle大小(五個文件):90001.assetBundles :846KB
11001.assetBundles :526KB
common_sub.assetBundles:4.93MB
11001.txt : 248 KB
90001.txt : 81KB
共 6.60MB
百分比:1- (6.60 / 8.65) = 13.7%;
結論:bundle大小與兩個場景中復用同樣資源對象有關,場景越多。復用同樣資源對象越多,bundle的總的大小相對越小
=========================================================================================================
第二階段:AssetBundle場景打包工具
一、完好打包工具
1、將場景打包工具整合到一起
二、載入assetbundle到場景中
1、載入場景assetbundle資源
2、載入xml文件
3、載入公共assetbundle資源
=========================================================================================================
第三階段: assetbundle加版本 和其他
一、assetbundle加版本 和其他
1、將assetbundle放到txt文件裏,實現讀取和寫入
2、加入新的assetbundle輸出路徑
=========================================================================================================
第四階段:Assetbundle打包區域地圖的場景
1、研究區域地圖引擎bake的navmesh和lightmap動態載入問題
2、編寫區域地圖打包工具
3、navmesh、lightmap、以及場景三個打包工具
4、將以上三個打包工具整合成一個
1、解決如今同一個資源打2個bundle的冗余問題
2、測試驗證節省資源的比率是多少
問題拆分
一、bundle反復
問 題 :同樣資源拆分問題?
解決方式:1、制作場景時將同樣部分分開
制作方法:將每一個場景同樣部分放到同一個文件夾,不同部分保留在場景中
打包方法:a、打成獨立的bundle,不同部分放到每一個場景中打成bundle
b、用xml記錄下每一個場景中公共部分的transform,bundle名稱、資源名稱、父節點信息
優 點:打包工具的實現方便、快捷
缺 點:制作時對美術有一定要求,尤其在加入新的場景
2、將場景中對象分為資源對象和骨架對象,資源對象用tag標記為Element。
資源對象:每個資源對象生成獨立的預設。形成新的公共的bundle。
骨架對象:和正常的場景打包一樣。
制作方法:每一個場景正常制作,將場景中對象分為資源對象和骨架對象。資源對象用tag標記為Element。
打包方法:a、直接對場景打包。打包時依據tag生成不同的bundle
b、用xml記錄每一個場景中每一個gameobject transform、bundle名稱、父節點信息
優 點:僅僅要設置tag,不需區分是否是公共資源
缺 點:打包工具的實現比較復雜
xml文件格式:
<Bundle name = "" count = "">
<Element name= "" parentname = "" localtran=",,,,,,,,,"> </Element>
<Element name= "" parentname = "" localtran=",,,,,,,,,"> </Element>
</Bundle>
綜上所說。我們將用方案2進行編寫並實現。
二、驗證百分比
解決方式: 節省資源百分比 = 1 - (上面兩種方式打bundle中的任一種bundle的大小/傳統方式bundle大小 *100%)。
一個場景時:
場 景:90001
比 較:1、傳統打bundle大小(一個文件) :90001.assetBundles:3.83MB
2、使用方案二打bundle大小(三個文件):90001.assetBundles :846KB
common_sub.assetBundles:3.39MB
90001.txt : 81KB
共 4.28MB
百分比:1 - 4.28 / 3.83 = -11.7%;
結 論:bundle大小與在場景中使用同樣資源對象數量無關,與文件多少有關
兩個場景時:
場景:90001 11001
比較:1、傳統打bundle大小(兩個文件): 90001.assetBundles : 3.83 MB
11001.assetBundles : 4.82 MB
共 8.65MB
2、使用方案二打bundle大小(五個文件):90001.assetBundles :846KB
11001.assetBundles :526KB
common_sub.assetBundles:4.93MB
11001.txt : 248 KB
90001.txt : 81KB
共 6.60MB
百分比:1- (6.60 / 8.65) = 13.7%;
結論:bundle大小與兩個場景中復用同樣資源對象有關,場景越多。復用同樣資源對象越多,bundle的總的大小相對越小
=========================================================================================================
第二階段:AssetBundle場景打包工具
一、完好打包工具
1、將場景打包工具整合到一起
二、載入assetbundle到場景中
1、載入場景assetbundle資源
2、載入xml文件
3、載入公共assetbundle資源
=========================================================================================================
第三階段: assetbundle加版本 和其他
一、assetbundle加版本 和其他
1、將assetbundle放到txt文件裏,實現讀取和寫入
2、加入新的assetbundle輸出路徑
=========================================================================================================
第四階段:Assetbundle打包區域地圖的場景
1、研究區域地圖引擎bake的navmesh和lightmap動態載入問題
2、編寫區域地圖打包工具
3、navmesh、lightmap、以及場景三個打包工具
4、將以上三個打包工具整合成一個
AssetBundle打包優化解決方式