Esempio n. 1
0
        // 풀 요소 생성
        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);
                }
            }
        }
Esempio n. 2
0
        public void Push(PoolElement poolelement)
        {
            m_stackPool[poolelement.id].Push(poolelement);
            m_listUsing.Remove(poolelement);

            poolelement.gameObject.SetActive(false);
            poolelement.gameObject.transform.parent = null;
        }
Esempio n. 3
0
        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);
        }