在Unity 4.x版本中,當需要打包成AssetBundle的資源存在層級引用的時候,需要使用BuildPipeline.PushAssetDependencies等相關函數将資源拆分并建立引用關系,然後在加載的時候按照相反的順序,先加載依賴檔案,再加載目标檔案的順序,将資料還原出來,并自動關聯好引用關系。在此過程中第一個加載的檔案不能調用AssetBundle.UnLoad(false),即在該過程中,會一直有第一個檔案的記憶體映射備援在記憶體中,這對于寶貴的手機記憶體來說是十分緻命的。當然我們也可以自我管理引用關系來規避這種備援。
現有項目是使用BundleManager 插件,在此基礎上添加MD5,用于資源更新和熱更新從伺服器下載下傳檔案時做資源對比。同時在次基礎做了一些貼合項目的友善操作。
1.實作了不同平台不同的BundleData檔案,來滿足不同平台打包上的差別
2.實作了小圖示是,有資源更新後,帶有感歎号的黃色三角形來做更新提醒
3.為了打包友善,實作快捷使用按鈕,策劃管理打包,管理美術資源進入項目
源碼代碼:https://github.com/zhutaorun/SomeTips/tree/master/Assets/BundleManager
最新代碼明天更新上去
參考來源: http://blog.uwa4d.com/archives/AB4-x.html
http://blog.uwa4d.com/archives/ABtopic_1.html
官方API:https://docs.unity3d.com/500/Documentation/Manual/BuildingAssetBundles.html