Ejemplo n.º 1
0
        public void OnDestroyObject(PoolableMonoBehaviour poolableMonoBehaviour)
        {
            var poolableClass = poolableMonoBehaviour.GetOriginalInstanceId();

            if (!_pooledObjectDictionary.ContainsKey(poolableClass))
            {
                Queue <PoolableMonoBehaviour> poolableQue = new Queue <PoolableMonoBehaviour>();
                poolableQue.Enqueue(poolableMonoBehaviour);
                _pooledObjectDictionary.Add(poolableClass, poolableQue);
            }
            else
            {
                Queue <PoolableMonoBehaviour> poolableQueue = _pooledObjectDictionary[poolableClass];
                poolableQueue.Enqueue(poolableMonoBehaviour);
            }
        }
Ejemplo n.º 2
0
        public PoolableMonoBehaviour GetPoolableObject(PoolableMonoBehaviour original)
        {
            int instanceID = original.GetInstanceID();
            PoolableMonoBehaviour objectToReturn = null;

            if (_pooledObjectDictionary.ContainsKey(instanceID))
            {
                Queue <PoolableMonoBehaviour> poolableQueue = _pooledObjectDictionary[instanceID];
                if (poolableQueue.Count > 0)
                {
                    objectToReturn = poolableQueue.Dequeue();
                }
            }
            if (objectToReturn == null)
            {
                objectToReturn = MonoBehaviour.Instantiate(original);
            }
            objectToReturn.SetActive(true);
            objectToReturn.SetOriginalInstanceId(original);
            return(objectToReturn);
        }
Ejemplo n.º 3
0
 public void SetOriginalInstanceId(PoolableMonoBehaviour original)
 {
     OriginalInstanceId = original.GetInstanceID();
 }
Ejemplo n.º 4
0
 public static PoolableMonoBehaviour GetPoolable(PoolableMonoBehaviour original)
 {
     return(ObjectPoolingManager.GetInstance().GetPoolableObject(original));
 }