using System.Collections.Generic; using UnityEngine; public class ObjectPool where T : Object { private readonly Queue _pool; private readonly List _prefab; public ObjectPool(IEnumerable poolPrefab) { _pool = new Queue(); _prefab = new List(); _prefab.AddRange(poolPrefab); } /*public ObjectPool(IEnumerable prefabs) { _pool = new Queue(); _prefab.AddRange(prefabs); }*/ public void Pool(T objectToPool) { _pool.Enqueue(objectToPool); } public T DePool() { if (_pool.Count > 0) { return _pool.Dequeue(); } var randomNumber = Random.Range(0, _prefab.Count); return Object.Instantiate(_prefab[randomNumber]); } public void PoolAll(IEnumerable listOfObject) { foreach (var obj in listOfObject) { Pool(obj); } } }