Unity 優化快取池

2021-10-05 06:28:51 字數 2092 閱讀 5744

1.給放入快取池的gameovject設定父節點

using system.collections;

using system.collections.generic;

using unityengine;

///

/// 快取池模組

/// 1.dictionary list

/// 2.gameobject和resources 兩個公共類的api

///

public

class

poolmgr

:basemanger

//快取池沒有,載入預設體

else

//取出來的時候啟用

obj.

setactive

(true);

//斷開了父子關係

obj.transform.parent = null;

return obj;

}///

/// 還暫時不用的東西

///

public

void

pushobj

(string name,gameobject obj)

//設定父物件為根節點

obj.transform.parent = poolobj.transform;

//裡面有gameobject

if(pooldic.

containskey

(name)

)//裡面沒有

else);

}}///

/// 清空快取池的方法

/// 用在場景切換時

2.將快取物件的父節點劃分的更細

快取物件在層級視窗的結構:

池子容器類–pooldata

/// 

/// 池子資料

///

public

class

pooldata

;pushobj

(obj);}

public

void

pushobj

(gameobject obj)

//從列表裡取東西

public gameobject getobj()

}

池子管理類–poolmgr.cs

public

class

poolmgr

:basemanger

//快取池沒有,載入預設體

else

return obj;

}///

/// 還暫時不用的東西

///

public

void

pushobj

(string name,gameobject obj)

//裡面有gameobject

if(pooldic.

containskey

(name)

)//裡面沒有

else

}///

/// 清空快取池的方法

/// 用在場景切換時

///

public

void

poolclear()

}

Unity記憶體優化 物件池

為什麼用物件池?作用 因為mono內存在unity中不能手動釋放,當其記憶體超過上限時,會先觸發gc釋放沒有用到的記憶體空間,如果還不夠則會擴充。其容量一旦被撐大,專案所佔的記憶體就會跟著增大。使用物件池可以減少物件建立,緩解記憶體壓力。物件池示意 這裡通過乙個棧儲存物件 m maxcount 表示...

Unity通用框架搭建(四) 快取池設計

前面一文基於addressable的資源載入更新記錄了資源的載入,本文將緊貼資源的載入,結合設計模式中的享元模式的理念設計物件快取池,避免在遊戲過程中頻繁的進行建立和銷毀的工作。在基於addressable的資源載入更新一文中有提到快取池的結構,主要分為以下幾大模組 private class ca...

Unity 資源池,物件池,Object Poor

將一定數量的物件預先儲存在資源池中,當需要的時候使用,不用的時候再放回。這樣節約了很多效能,不必每次都去生成然後再銷毀。資源池常有的引數 資源的種類,資源的初始數量,資源的最大數量。假如我們在遊戲中需要不停的使用幾種特效,然後銷毀該特效 或者不停的生成乙個物體 子彈等 然後再去銷毀這個物體。頻繁使用...