using System.Collections; using System.Collections.Generic; using Services.Interfaces; using UnityEngine; namespace Services { public class ObjectPoolService:IObjectPool { private readonly GameObject prefab; private readonly Transform parent; private readonly int size; private readonly Stack pool = new Stack(); public ObjectPoolService(GameObject prefab, Transform parent, int size = 5) { this.prefab = prefab; this.parent = parent; this.size = size; } public GameObject Get() { return this.pool.Count == 0 ? Object.Instantiate(this.prefab, this.parent) : this.pool.Pop(); } public void Fill() { for (int i = 0; i < this.size; i++) { Object.Instantiate(this.prefab, this.parent); } } public void Release(GameObject gameObject) { this.pool.Push(gameObject); } public void Clear() { this.pool.Clear(); } } }