Beispiel #1
0
    /// <summary>
    /// Returns a given object back to the pooler for future use.
    /// </summary>
    /// <param name="obj">The object to be returned.</param>
    public void ReturnPooledObject(Poolable obj)
    {
        if (!unactivePool[obj.poolName].Contains(obj))
        {
            obj.gameObject.SetActive(false);
            switch (obj.poolName)
            {
            case PooledName.Unassigned:
                break;

            default:
                obj.Reset();
                activePool[obj.poolName].Remove(obj);
                unactivePool[obj.poolName].Add(obj);
                break;
            }
        }
    }
Beispiel #2
0
 void Awake()
 {
     activePool         = new Dictionary <PooledName, List <Poolable> >();
     unactivePool       = new Dictionary <PooledName, List <Poolable> >();
     getPooledEvent    += GetPooledObject;
     returnPooledEvent += ReturnPooledObject;
     foreach (PooledObject o in objectsToPool)
     {
         List <Poolable> temp = new List <Poolable>();
         for (int i = 0; i < o.startCount; i++)
         {
             Poolable obj = (Poolable)Instantiate(o.instance);
             obj.gameObject.SetActive(false);
             obj.Reset();
             temp.Add(obj);
         }
         unactivePool.Add(o.name, temp);
         activePool.Add(o.name, new List <Poolable>());
     }
 }