using System;
using System.Collections.Generic;
public class ObjectPool<T> where T:class
{
//堆棧
private readonly Stack<T> m_stack;
//事件
private readonly Func<T> m_ActionOnCreate;
private readonly Action<T> m_ActionOnGet;
private readonly Action<T> m_ActionOnRelease;
//構(gòu)造函數(shù)
public ObjectPool(Func<T> actionOnCreate, Action<T> actionOnGet, Action<T> actionOnRelease)
{
m_stack = new Stack<T>();
m_ActionOnCreate = actionOnCreate;
m_ActionOnGet = actionOnGet;
m_ActionOnRelease = actionOnRelease;
}
//獲取接口
public T Get()
{
T obj;
if(m_stack.Count == 0)
{
//執(zhí)行構(gòu)建操作
obj = m_ActionOnCreate();
}
else
{
obj = m_stack.Pop();
}
//執(zhí)行回調(diào)
if(m_AcitonOnGet != null)
{
m_ActionOnGet(obj);
}
return obj;
}
//釋放接口
public void Release(T obj)
{
if(m_ActionOnRelease != null)
{
m_ActionOnRelease(obj);
}
m_stack.Push(obj);
}
//clear接口
public void Clear()
{
m_stack.Clear();
}
}
Unity 簡(jiǎn)單的緩存池
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 在公司看源碼的時(shí)候,發(fā)現(xiàn)一個(gè)投籃的場(chǎng)景中,玩家把籃球不斷投出去,然后不斷的創(chuàng)建和銷毀對(duì)象。于是試著寫個(gè)緩存池來管理...
- 一、腳本1:對(duì)象池:用于存放相同類型的游戲?qū)ο?usingSystem.Collections; usingSys...
- 我們知道不限于工程 代碼之中 萬事之中 總是不斷尋找最好的方案 方法去解決同一樣事 當(dāng)然 一個(gè)事物 這樣做可以 ...
- 簡(jiǎn)單的對(duì)象池分三步走: 建立對(duì)象池 拿到對(duì)象 回收對(duì)象 Test為對(duì)象池,Obj為自動(dòng)回收的物體 Test.cs ...
- 算起來我學(xué)書已經(jīng)兩年有余,書體上隸楷行草都有涉獵。不過平日里寫字大部分時(shí)間都以臨摹為主,偶有的創(chuàng)作作品都是作為參賽...