← Todas las publicaciones
post6 de mayo de 2026
Object Pooling — Deja de Instanciar
#csharp#unity#performance#object-pooling

csharp
using System.Collections.Generic;
using UnityEngine;
public class BulletPool : MonoBehaviour
{
[SerializeField] private GameObject prefab;
[SerializeField] private int size = 20;
private Queue<GameObject> _pool = new();
private void Awake()
{
for (int i = 0; i < size; i++)
{
var obj = Instantiate(prefab);
obj.SetActive(false);
_pool.Enqueue(obj);
}
}
public GameObject Get()
{
if (_pool.Count == 0) return Instantiate(prefab); // overflow
var obj = _pool.Dequeue();
obj.SetActive(true);
return obj;
}
public void Return(GameObject obj)
{
obj.SetActive(false);
_pool.Enqueue(obj);
}
}