“SubPool ”具体脚本内容如下:
using System.Collections.Generic;
using UnityEngine;
public class SubPool {
List subPool = new List();
GameObject m_Pref;
public string Name {
get {
return m_Pref.name;
}
}
public SubPool(GameObject pref) {
m_Pref = pref;
}
public GameObject Spawn() {
GameObject obj = null;
foreach (GameObject o in subPool) {
if (o.activeSelf == false) {
obj = o;
}
}
if (obj == null) { //第一次和池子中没有的时候
obj = GameObject.Instantiate(m_Pref);
subPool.Add(obj);
}
obj.SetActive(true);
IReusable ir = obj.GetComponent();
if (ir != null) {
ir.Spawn();
}
return obj;
}
public void UnSpawn(GameObject obj) {
if (subPool.Contains(obj)) {
IReusable ir = obj.GetComponent();
if (ir != null) {
ir.UnSpawn();
}
obj.SetActive(false);
}
}
public void UnSpawnAllObject() {
foreach (GameObject o in subPool) {
if (o.activeSelf == true) {
UnSpawn(o);
}
}
}
public bool ContainObjectInSubPool(GameObject obj) {
return subPool.Contains(obj);
}
}