/// <summary> /// Move obj to pool in hirerachy and enqueue for key /// </summary> /// <param name="key">Key.</param> /// <param name="obj">Object.</param> public void Release(string key, GameObject obj) { GOPoolElement elem = poolMap.Get(key); if (elem == null) { Debug.LogErrorFormat("Name {0} prefab doesn't registed", key); return; } obj.transform.SetParent(inactivePool); elem.pool.Enqueue(obj); }
/// <summary> /// Get obj for key and move to below of parent in hirerachy /// </summary> /// <param name="key">Key.</param> /// <param name="parent">Parent.</param> public GameObject Get(string key, Transform parent) { GOPoolElement elem = poolMap.Get(key); if (elem == null) { Debug.LogErrorFormat("Name {0} prefab doesn't added to pool", key); return(null); } Queue <GameObject> queue = elem.pool; GameObject obj = queue.Empty() ? null : queue.Dequeue(); if (obj == null) { obj = Object.Instantiate(elem.prefab); } obj.transform.SetParent(parent); return(obj); }