Unity 通用 物件池管理

2021-10-20 19:35:20 字數 1942 閱讀 9432

一般情況下我們使用物件池是物體的建立和管理。但在很多情況下需要批量建立的物體需要做一些邏輯處理,這樣我們需要記錄物件池對應的資料狀態。

所以我們就直接把物件作為管理物件,這樣我們可以在物件裡面做一些邏輯處理還能便於物體管理。

作為物件管理類,那麼我們必須要乙個同乙個父類作為管理的類別。在父類裡面包含一些基礎的函式方法。

便於在例項化的時候統一規範。

public

class

itemclassbase

public virtual void

init

(transform trans)

public virtual void

show

(transform parenttransform)

public virtual void

hide()

public virtual void

setsiblingindex

(int index)

}

這就是普通的物件管理類,把物件想物體建立一樣管理。

public

class

objectpoolsmgr

return buildroot;}}

dictionary dicpooltrans =

newdictionary

(); dictionary> m_dicpool =

newdictionary

>()

; dictionary> m_dicuse =

newdictionary

>()

;//建立物件的物件池 預設1個

public

t getitemobject<

t>

(transform trans, int count =

1) where t

: itemclassbase

elseif(

!m_dicpool.

containskey

(name)

|| m_dicpool[name]

.count ==0)

} m_t =

getitem

(name)ast

;return m_t;

}//歸還

public

void returnitem<

t>

(t m_this =

null

, bool isall =

true

) where t

: itemclassbase

m_dicuse.

remove

(name);}

}else

} itemclassbase getitem

(string itemname)

m_dicuse[itemname]

.add

(m_item)

; m_dicpool[itemname]

.remove

(m_item)

;return m_item;

}void

additem

(string name, itemclassbase item)if(

!m_dicpool[name]

.contains

(item))}

}

public

class

a: itemclassbase

}

void

start()

void

ondesable()

Unity基礎 物件池

物件池是一種通過空間來換取時間的思想 佔記憶體,時間消耗少 適用性 頻繁建立 銷毀遊戲物件 字典 型別,物件 資料結構 dictionary 核心成員 1.通過物件池建立物件 2.物件 using system.collections using system.collections.generic...

Unity 資源池,物件池,Object Poor

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

unity中物件池運用

最近在研究物件池在unity中的運用 物件池,通常用於在那些需要經常建立又銷毀的物件 比如我們場景中的小怪,經常需要建立和銷毀,我們就可以在小怪銷毀的時候,不真正的銷毀而是,而是把它放入物件池中 等到下一次我們需要建立小怪的時候,再從物件池中取出來 由於物件池的物件沒有真正銷毀,而手機的記憶體又是如...