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