UnityPooler.PoolableGameObject.Release C# (CSharp) Method

Release() public method

Releases an object back to the pool.
public Release ( ) : void
return void
        public void Release()
        {
            if (gameObject == null)
            {
                return;
            }

            if (_originalObject == null)
            {
                gameObject.SetActive(false);
                return;
            }

            if (!_isActive)
            {
                return;
            }

            if (_liveNode != null)
            {
                _originalObject._liveObjs.Remove(_liveNode);
                _originalObject._pooledNodes.Push(_liveNode);
                _liveNode = null;
            }

            _isActive = false;

            if (!persistAcrossScenes && _tempContainer == null ||
                persistAcrossScenes && _persistedContainer == null)
            {
                // Nothing to release to, might be quitting
                return;
            }

            transform.SetParent(container, false);
            gameObject.SetActive(false);
            _originalObject._pooledObjs.Push(this);
            _numOfActiveObjs--;
        }

Usage Example

示例#1
0
        /// <summary>
        /// Releases an object back to its object pool.
        /// </summary>
        /// <param name="objToRelease">Object to release</param>
        public static void ReleaseObj(GameObject objToRelease)
        {
            PoolableGameObject poolable = objToRelease.GetComponent <PoolableGameObject>();

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

            poolable.Release();
        }