LuaFramework內存資源管理器ResourceManger詳解及切換場景資源清理

1.成員變量

m_BaseDownloadingURL : 獲取資源的地方,加載AssetBundle包的時候會用到

m_AssetBundleManifest : 包間依賴關係文件,從這個類中的信息中可以知道某個包依賴的包有哪些,如果依賴的包還沒加載進去則先加載依賴包

m_Dependencies : 如上,一個包名對應多個依賴包名

m_LoadedAssetBundles :已經加載入內存的AssetBundle包,一個包名對應一個AssetBundle(AssetBundleInfo包了一層)

m_LoadRequests : 當前正在處理的“從AssetBundle包中解壓Asset資源(紋理,材質,預設等)”的請求,一個包名對應多個Asset資源名

 

2.重要調用堆棧

ResourceManager初始化

GameManager.Init->CheckExtractResource->OnUpdateResource->OnResourceInited->ResourceManager.Initiallize

加載AssetBundle包並把指定的Asset資源從包中解壓出來,一般都是通過LoadPrefb調用,把預設從包中解壓出來,則會同時把預設引用的資源(例如mesh,材質,紋理等)解壓出來。一般情況下,在使用某個預設去Initialize出一個克隆體之前,會加載這個預設資源。加載預設資源需要一定時間,所以對於一些較大的資源,也可以在loading的時候全部加載出來,不過這樣內存佔用就比較大了,即所謂用空間換時間。

ResourceManager.LoadPrefb-》LoadAsset

 

3.主要函數

LoadAsset

OnLoadAssetBundle

OnLoadAsset

4.加載資源過程中內存佔用

http://www.cnblogs.com/U-tansuo/archive/2013/04/02/unity3d_memory_optimization.html

5.切換場景資源清理

由於LoadLevel調用的時候僅把“1.實例化的gameobject 2.prefabs 3.通過AssestBundle.LoadAsset(prefabs)自動加載進來的asset”刪除了,而ab包沒管,所以需要清理一下ab包以減少內存的佔用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章