Exemplo n.º 1
0
        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());
            }
        }
Exemplo n.º 2
0
        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);
        }