Unity3D - 資源管理

    一直沒有總結過Unity的資源管理,都是隨用隨看文檔。今天有人問起,總結一下,加深對Unity資源管理的理解。主要參考了Unity官方文檔之ResourcesAssetBundle

    Unity有兩種動態加載資源的方式,Resources.Load和AssetBundle。Resources.Load用於加載打進遊戲包內Resources目錄下的資源,AssetBundle用於加載包外自己打的資源包(使用BuildPipeline.BuildAssetBundle),常用於做動態更新。下面結合API具體說明:


加載:

Resources.Load:加載app包內Resources/目錄的一個asset;

Resources.LoadAsync:Resources.Load的異步方法;

Resources.LoadAll:類似Resources.Load,但是用於加載某目錄下所有asset;

Resources.LoadAssetAtPath:加載Asset/目錄下的資源,只能用於編輯器模式,寫打包工具時可能用到;

---------------------------------------------------------------------------------------------------------------------------------------

AssetBundle.CreateFromFile:從磁盤加載一個AssetBundle,這是加載AssetBundle最快的方式(只能加載uncompressed的AssetBundle)。Unity 5.x改爲LoadFromFile,而且可以加載compressed的

AssetBundle.CreateFromMemory:從內存中創建一個AssetBundle,異步方法。Unity 5.x改爲LoadFromMemoryAsync

AssetBundle.CreateFromMemoryImmediate:AssetBundle.CreateFromMemory的同步方法。Unity 5.x改爲LoadFromMemory;

WWW.LoadFromCacheOrDownload:從緩存或網絡上下載後加載AssetBundle,不需擔心設備空間不足;

AssetBundle.LoadAsset:從AssetBundle中加載一個asset;

AssetBundle.LoadAssetAsync:AssetBundle.LoadAsset的異步方法;

AssetBundle.LoadAllAssets:加載AssetBundle中所有指定類型的asset;

AssetBundle.LoadAllAssetsAsync:AssetBundle.LoadAllAssets的異步方法;


卸載:

Resources.UnloadAsset(Object assetToUnload):卸載指定的asset,只能用於從磁盤加載的;如果場景中有此asset的引用,Unity會自動重新加載它;

Resources.UnloadUnusedAssets:卸載所有未被引用的asset,可以在畫面切換時調用,或定時調用釋放全局未使用資源;

---------------------------------------------------------------------------------------------------------------------------------------

AssetBundle.Unload(false):卸載AssetBundle的壓縮文件數據(文件內存映像);

AssetBundle.Unload(true)卸載AssetBundle文件內存映像,並且釋放所有已加載的asset;如果asset在場景中被引用,會丟失;

---------------------------------------------------------------------------------------------------------------------------------------

Object.Destroy:銷燬一個GameObject、組件或asset;並不是立即銷燬,而是在Update循環之後,渲染之前;

Object.DontDestroyOnLoad:標明一個對象在切換場景時不被銷燬;

GC.Collect:強制垃圾收集器立即回收內存,可以根據需要使用,比如切換畫面調用或定時調用;


通過看Unity的這些API說明,可以清晰地瞭解Unity的動態資源管理了。下面這幅圖描繪的更清晰:


發佈了60 篇原創文章 · 獲贊 638 · 訪問量 51萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章