设计模式-对象池

大量预制的创建与销毁会带来很大性能的不必要消耗,利用对象池可以有效的减少此类问题


  1. 一个池子用来放置物体与存取物体
  2. 取物体的方法
  3. 放物体的方法

使用UnityEngine;
使用System.Collections;
使用System.Collections.Generic;
公共类GameObjectPool:MonoBehaviour {
List pools = new List ();
private GameObjectPool(){} //单例模式
私人静态GameObjectPool实例;
public static GameObjectPool GetInstance(){
if(instance == null){
instance = new GameObject(“GameObjectPool”)。AddComponent ();
}
返回实例;
}
//取物体的方法
public GameObject Get(GameObject name){
        //没有则实例化新的
if(pools.Count == 0){
作为GameObject返回实例化(名称,Vector3.zero,Quaternion.identity);
}其他{
//取出对象池里面的第一个元素
GameObject obj = pools [0];
obj.SetActive(真);
pools.Remove(OBJ);
返回obj;
}
}
//放物体的方法
public void Put(GameObject name){
name.SetActive(假);
pools.Add(名称);
}
}

你可能感兴趣的:(ünity)