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的動態資源管理了。

以下這幅圖描繪的更清晰:



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM