// 풀 요소 생성 public IEnumerator CreateElement() { for (int i = 0; i < m_listOriginal.Count; i++) { m_stackPool.Add(new Stack <PoolElement>()); } int limit = (int)(m_nPoolCapacity / m_listOriginal.Count); limit = m_nPoolCapacity % m_listOriginal.Count == 0 ? limit : limit++; for (int i = 0; i < (int)(m_nPoolCapacity / m_listOriginal.Count); i++) { for (int j = 0; j < m_listOriginal.Count; j++) { var go = GameObject.Instantiate(m_listOriginal[j], new Vector2(99, 0), Quaternion.identity) as GameObject; go.SetActive(false); PoolElement elem = go.GetComponent <PoolElement>(); elem.pool = this; elem.id = j; m_stackPool[j].Push(elem); yield return(null); } } }
public void Push(PoolElement poolelement) { m_stackPool[poolelement.id].Push(poolelement); m_listUsing.Remove(poolelement); poolelement.gameObject.SetActive(false); poolelement.gameObject.transform.parent = null; }
private PoolElement CommonPop(Transform parent = null) { PoolElement elem = GetRandomStack().Pop(); elem.gameObject.SetActive(true); if (parent != null) { elem.gameObject.transform.parent = parent; } m_listUsing.Add(elem); return(elem); }