unity資源管理 記憶體池

2021-07-02 13:57:31 字數 1356 閱讀 6394

記憶體池思想:建立物件時,先檢查記憶體池中是否有快取物件,如果沒有再建立新的。 刪除物件時,不立即銷毀,快取一段時間,避免重複建立,提公升執行效率,用空間換時間的做法。常用怪、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 支援的貼圖格式不一樣,通過配置檔案的形式,最後方便的生成不同格式的貼圖。這...