unity中创建和销毁游戏物体都有较大的性能开销。因此,对于需要大量创建和销毁游戏物体的情况(如射击游戏中子弹不断生成和销毁),如果对每一个对象都进行创建和销毁会造成大量性能开销。为此,我们可以利用对象池进行对象的缓存和复用。
每当一个游戏物体要退出场景,我们不立刻将该对象销毁,而是将其储存到对象池里。当再需要出现同类对象时,我们先从对象池里获取之前存储的对象,如果对象池已空再创建新对象。
对象池类:
// object pool
public class PoolStack {
public Stack<UnityEngine.Object> stack = new Stack<Object>();
public int MaxCount = 100; // maximum objects in stack
// push gameObject into the pool
public void Push(UnityEngine.Object obj) {
if (stack.Count < MaxCount) {
stack.Push(obj);