Unity基礎 物件池

2021-10-03 05:08:20 字數 2802 閱讀 9698

物件池是一種通過空間來換取時間的思想

佔記憶體,時間消耗少

適用性:頻繁建立/銷毀遊戲物件

字典《型別,物件》

資料結構:dictionary>

核心成員

1.通過物件池建立物件

2.**物件

using system.collections;

using system.collections.generic;

using unityengine;

namespace common

///

/// 物件池

/// 只用一次,繼承單例類

///

public

class

gameobjectpool

:monosingleton

///

/// 【重要一】通過物件池,建立物件

///

/// 類別

/// 需要建立例項的預製體

/// 位置

/// 旋轉

/// 返回需要的物件

/// 結構清晰

public

gameobject

createobject

(string key,

gameobject prefab,

vector3 pos,

quaternion rotate)

//3.設定物件的位置,旋轉(提取方法)

useobject

(pos, rotate, go)

;return go;

}//1.查詢可用的物件,返回物件

private

gameobject

findusableobject

(string key)

return

null;}

//2.建立新的物件,並加入物件池,返回乙個物件

private

gameobject

addobject

(string key,

gameobject prefab)

return go;

}//鉤子...

//3.設定物件的位置,旋轉

private

void

useobject

(vector3 pos,

quaternion rotate,

gameobject go)

}///

/// 【重要二】**物件

///

/// 需要被**的物件

/// 延遲時間,預設為0

public

void

collectobject

(gameobject go ,

float delay=0)

public

ienumerator

collectobjectdelay

(gameobject go,

float delay =0)

///

/// 清空某個key類別,和其遊戲物件

///

/// 類別

public

void

clear

(string key)

//常規倒敘刪除,遊戲物件

for(

int i = cache[key]

.count-

1; i >=

0; i--

)//刪除類別

cache.

remove

(key);}

///

/// 清除全部類別

///

///

public

void

clearall

(string key)

//將所有字典的key存入list中

list<

string

> keylist =

newlist

<

string

>

(cache.keys)

;//讀a刪除b,遍歷a集合,刪除字典記錄

foreach

(var item in keylist)}}

}

using common;

using system.collections;

using system.collections.generic;

using unityengine;

using system;

namespace ns

//每次通過物件池建立時執行一次

public

void

onreset()

private

void

update()

}}}

using common;

using system.collections;

using system.collections.generic;

using unityengine;

namespace ns

//************測試**************

private

void

ongui()

if(guilayout.

button

("清空類別"))

if(guilayout.

button

("清空全部"))

}}}

Unity 資源池,物件池,Object Poor

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

unity中物件池運用

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

Unity 物件池之SubPool

首先明確物件池中的一些元素 1,預設 2,集合 3,名字標識 4構造 using system using system.collections.generic using unityengine using system.text public class subpool 構造 public su...