示例#1
0
    public virtual void ReturnItem(T item)
    {
        poolingItem <T> poolingItem = pooledItems.Find(i => i.item.Equals(item));

        poolingItem.isActive = false;
        Debug.Log("Returned Item to pool");
    }
示例#2
0
    private T CreateNewPooledItem()
    {
        poolingItem <T> poolItem = new poolingItem <T>();

        poolItem.item     = CreateItem();
        poolItem.isActive = true;
        pooledItems.Add(poolItem);
        Debug.Log("Adding New Item to Pool");
        return(poolItem.item);
    }
示例#3
0
 public virtual T GetItem()
 {
     if (pooledItems.Count > 0)
     {
         poolingItem <T> pooledItem = pooledItems.Find(i => !i.isActive);
         if (pooledItem != null)
         {
             pooledItem.isActive = true;
             Debug.Log("Got item from Pool");
             return(pooledItem.item);
         }
     }
     return(CreateNewPooledItem());
 }