public void Recycle(IPoolObject _object) { if (poolQueue.Count < maxObjCount) { _object.GetGameObject().SetActive(false); poolQueue.Enqueue(_object); #region UNITY_EDITOR #if UNITY_EDITOR _object.GetGameObject().transform.SetParent(poolRoot); #endif #endregion } else { Destroy(_object.GetGameObject()); } }
public IPoolObject GetOneObject() { IPoolObject instance = null; if (poolQueue.Count > 0) { instance = poolQueue.Dequeue(); } else { instance = Instantiate(objectPrefab).GetComponent <IPoolObject>(); instance.InitObject(this); #region UNITY_EDITOR #if UNITY_EDITOR if (poolRoot == null) { poolRoot = new GameObject("" + objectPrefab.name + "Pool").transform; poolRoot.position = Vector3.zero; poolRoot.eulerAngles = Vector3.zero; } #endif #endregion } instance.GetGameObject().SetActive(true); #region UNITY_EDITOR #if UNITY_EDITOR instance.GetGameObject().transform.SetParent(poolRoot); #endif #endregion return(instance); }