UnityPooler.PoolableGameObject.AddToPool C# (CSharp) Method

AddToPool() public method

Adds 'numberToAdd' to the pool.
public AddToPool ( int numberToAdd ) : void
numberToAdd int Amount to add to the pool.
return void
        public void AddToPool(int numberToAdd)
        {
            if (numberToAdd <= 0)
            {
                return;
            }

            if (GameObjectPool.verboseLogging)
            {
                Debug.LogFormat("Adding {0} {1} to  pool.", numberToAdd, gameObject.name);
            }

            Initialize();

            bool activeState = gameObject.activeSelf;
            gameObject.SetActive(false);

            for (int i = 0; i < numberToAdd; i++)
            {
                if (useCap && (_pooledObjs.Count + _numOfActiveObjs >= capAmount))
                {
                    // We're done here
                    break;
                }

                PoolableGameObject newObj = Instantiate(gameObject).GetComponent<PoolableGameObject>();

                if (persistAcrossScenes)
                {
                    DontDestroyOnLoad(newObj.gameObject);
                }

                newObj.transform.SetParent(container);
                newObj._originalObject = this;

                _pooledObjs.Push(newObj);

                if (!newObj._createMsgSent)
                {
                    SendCreationMessage(newObj);
                }

                if (useCap || persistAcrossScenes)
                {
                    _pooledNodes.Push(new LinkedListNode<PoolableGameObject>(null));
                }
            }

            gameObject.SetActive(activeState);
        }

Usage Example

Exemplo n.º 1
0
        /// <summary>
        /// Adds to the prefab's or GameObject's object pool.
        /// </summary>
        /// <param name="objToAddTo">The prefab or GameObject to add to.</param>
        /// <param name="amount">Amount to add.</param>
        public static void AddToPoolWithObj(GameObject objToAddTo, int amount)
        {
            PoolableGameObject poolable = objToAddTo.GetComponent <PoolableGameObject>();

            if (poolable == null)
            {
                Debug.LogErrorFormat(REQUIRES_COMP, objToAddTo.name, "AddToPool");
                return;
            }

            poolable.AddToPool(amount);
        }