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類不是我們關注...