using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnityEngine; public class SubPool { //集合 List m_objecs = new List(); //预设 GameObject m_prefab; //名字 public string Name { get { return m_prefab.name; } } public SubPool( GameObject go) { m_prefab = go; } //取出物体 public GameObject Spawn(Transform m_parent) { GameObject go = null; foreach (var obj in m_objecs) { if (!obj.activeSelf) { go = obj; } } if (go == null) { go = GameObject.Instantiate(m_prefab, m_parent.position,Quaternion.identity,m_parent); go.transform.eulerAngles = m_parent.eulerAngles; m_objecs.Add(go); } else { go.transform.SetParent(m_parent); go.transform.position = m_parent.position; go.transform.eulerAngles = m_parent.eulerAngles; } go.SetActive(true); go.SendMessage("OnSpawn", SendMessageOptions.DontRequireReceiver); return go; } //回收物体 public void UnSpawn(GameObject go) { if (Contain(go)) { go.SendMessage("OnUnSpawn", SendMessageOptions.DontRequireReceiver); go.SetActive(false); } } //回收所有 public void UnspawnAll() { foreach (var obj in m_objecs) { if (obj.activeSelf) { UnSpawn(obj); } } } //判断是否属于list里边 public bool Contain(GameObject go) { return m_objecs.Contains(go); } }