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);
}
/// <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); }