No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Object Pool II

27/31
Recursos

Aportes 2

Preguntas 1

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

algo raro pasa aca, la clase ObjectPooler esta muy distinta a como la dejamos en al clase anterior…
creo que el editor del video corto muchas partes

Acá dejo mis apuntes en código para los que se hayan perdido al ver que el código no es el mismo:

void Start()
{
  instancedObjects = new List<GameObject>();

  // Recorre los objetos que se quiere agregar
  foreach(var item in itemsToPool)
  {
    // Recorre la cantidad estimada
    for (int i = 0; i < item.amountToPool; i++)
    {
      // Instancia el objeto en la escena
      var go = Instantiate(item.objectToPool);

      // Lo deja desactivado para no ser visible
      go.SetActive(false);

      // Lo agrega a la lista de objetos instanciados
      instancedObjects.Add(go);
    }
  }
}

public GameObject GetPoolObject(string tag)
{
  // En caso de que existan objetos en la lista disponible, los retornará desde aquí
  for (int i = 0; i < instancedObjects.Count; i++)
  {
    // Si el item en la posición [i] no está activo en la escena y el tag corresponde, el valor será true
    if (!instancedObjects[i].activeInHierarchy && instancedObjects[i].CompareTag(tag))
    {
      // Retorna el objeto libre
      return instancedObjects[i];
    }
  }

  // En caso de que no existan objetos en la lista disponible
  foreach (var item in itemsToPool)
  {
    // Revisará si en la lista de objetos a instanciar existe uno con el mismo tag
    if (item.objectToPool.CompareTag(tag))
    {
      // Instancia el objeto en la escena
      var go = Instantiate(item.objectToPool);

      // Lo deja desactivado para no ser visible
      go.SetActive(false);

      // Lo agrega a la lista de objetos instanciados
      instancedObjects.Add(go);

      // Retorna el objeto libre
      return go;
    }
  }

  // Retorna null en caso de no encontrar por el tag
  return null;
}