記憶體池思想:建立物件時,先檢查記憶體池中是否有快取物件,如果沒有再建立新的。 刪除物件時,不立即銷毀,快取一段時間,避免重複建立,提公升執行效率,用空間換時間的做法。常用怪、npc、技能特效、血條等。
基本功能:儲存,獲取,智慧型刪除。
實現方式
基本物件
public class poolitem
public poolitem(string name,gameobject obj,bool forever)
public bool canuse //判斷是否可以使用,更新過一次的才能用
}public bool candel //判斷當前物件是否可以刪除,超過一定時間沒使用的刪除
}}
執行新增、刪除操作
private list_itemlist = new list();
private void _delitem(int index, bool immediate = false) //真正刪除物件 只在這乙個地方執行
private void _additemlist(poolitem item) //新增物件
獲取快取物件
//獲取快取物件 建立時先檢查是否有可用快取
public poolitem getfreeitem(string filename)
}return null;
}
儲存快取物件
//**物件 代替刪除
public void recycleitem(string effname, gameobject gb, bool isforever = false)
private poolitem _getpoolitem(gameobject gb)
}return item;
}
根據時間刪除不需要的快取物件
void update()
}
特殊條件釋放所有不用資源
//釋放所有資源 一般在切換場景時操作
public void unloadallfree()
}
對pe***b的處理:載入出來的資源很多需要在使用時動態改變一些引數,或設定顯隱等,**時需要根據實際情況重置。
這樣乙個簡單的記憶體池功能就實現了,實際應用中還可以控制不同物件快取時間,設定優先順序控制大小等。
遊戲引擎 資源管理 記憶體池設計(1)
資源管理包括兩個部分 記憶體管理 資源的記憶體分配 日誌管理 資源的資訊,記憶體資訊都將被記錄在日誌中 資源管理 統一資源 很簡單的記憶體池設計 ifndef cmemorypool h h define cmemorypool h h define null 0 templateclass cme...
深挖unity的資源管理
unity在這方面比較黑箱 有時候很困惑 比較特殊的就是這個destroy.destroy乙個asset的例項是可以的,但是如果destroy乙個asset就會把這個asset檔案被摧毀。對於prefab,這種差異很好區分,應該destroy那個instantiate出來的object 但是對於一些...
Unity專案中的資源管理
貼圖資源配置 對於這資源管理,unity提供非常豐厚的支援。以貼圖為例子,unity支援直接把原始貼圖直接放進工程,不需要做任何額外處理。unity根據貼圖配置會自動生成最後的貼圖資料。不同平台 ios android pc 支援的貼圖格式不一樣,通過配置檔案的形式,最後方便的生成不同格式的貼圖。這...