public void InitPool(uint _objectCount) { if (_objectCount == 0) { ClearPool(); } else { while (poolQueue.Count > _objectCount) { Destroy(poolQueue.Dequeue().GetGameObject()); } while (poolQueue.Count < _objectCount) { #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 IPoolObject instance = Instantiate(objectPrefab).GetComponent <IPoolObject>(); instance.InitObject(this); Recycle(instance); } } }
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); }