unity記憶體管理與優化

2021-08-20 17:14:19 字數 1099 閱讀 7632

1.建立時

無論是從全球資訊網。還是檔案或者儲存器,用assetbundle.load載入需要的資產,載入完成之後用assetbundle.unload(假)釋放assetbundle檔案本身映象,但不銷毀載入的資產物件。

2.釋放時

例項用破壞釋放。

在合適的地方使用resource.unloadunusedassets釋放沒有已近沒有引用的資產。

如果需要立即釋放,需要gc.collect的()立即強制釋放。

破壞:主要銷毀轉殖物件,但不會釋放該物件的所有引用

assetbundle.unload(假):釋放assetbundle檔案的記憶體映象

assetbundle.unload(真):釋放ab檔案記憶體映象同時,釋放所有已經負載的資產物件

resources.unloadasset(物件):顯示釋放次磁碟檔案載入的資產

resource.unloadunusedasset:釋放所有沒有引用的物件

所以gc.collect()

3.對於unusedasset不僅指沒有實際物體引用,還有變數的引用

object obj = resources.load(「prefab」);

gameobject go =啟動(obj)作為gameobject; //強制轉換

銷毀(去);

obj = null;

resource.unloadunusedasset();

如果沒有obj = null,呼叫resource.unloadunusedasset()不可能釋放掉,因為​​預製還被obj引用,所以unusedasset不僅指沒有實際物體引用,也指變數的引用

4.優化

1.減少在數字體系選單中對資源的直接引用,而是使用resource.load()在需要時讀取,在使用之後通過resource.unloadasset()和resource.unloadunusedasset()將其解除安裝

2.singleton不會在場景切換時摧毀,因此需要減少**耦合,或者手動銷毀,設定為空

Unity記憶體優化

一 大概標準 1.紋理 40m 2.mono 30m 3.animation 20m 4.mesh 10m 6.font 10m 7.audio 5m 8.gfxdriver 25m 9.resourcemanager 視情況而定 跟 你resourcemanager裡放了多少檔案 該標準是我做 m...

unity記憶體優化準則

常見判斷準則 記憶體閾值關注 managedheap.usedsize建議不超過20m 記憶體閾值關注 總體mone建議不超過40m 記憶體閾值關注 reserved memory建議不超過150m 記憶體閾值關注 2d紋理建議不超過50m 記憶體閾值關注 mesh大小建議不超過20m 記憶體閾值關...

unity 記憶體方面優化

作者寫的很好,看了他的書收穫很大。以下內容摘自 既然要聊unity3d執行時候的記憶體優化,那我們自然首先要知道unity3d遊戲引擎是如何分配記憶體的。大概可以分成三大部分 unity3d內部的記憶體 mono的託管記憶體 若干我們自己引入的dll或者第三方dll所需要的記憶體。第3類不是我們關注...