No tienes acceso a esta clase

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

Object Pool II

27/32
Recursos

Aquí encontrarás el código realizado durante la anterior clase:

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);
    }
  }
}

Y es aquí donde comienza el código de esta clase, con un for ya creado:

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;
}

Aportes 6

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

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;
}

Reporten el problema, asi ven de solucionarlo. Una pena porque el curso me estaba gustando pero el hecho de que falten partes de las clases ( ya es la 2da vez) saca las ganas. Habrá que buscar el object Pooling por afuera😑

¿Por qué motivo el codigo del ObjectPooler.cs es tán distinto al visto en la clase pasada? Ya son varias veces en el mismo curso que pasa lo mismo con codigos modificados sin explicar el como o el por qué.
Es una gran lástima, porque siento que estoy aprendiendo más bien poco y solo se me presentan topicos a buscar por mi propia cuenta. Como si estuviese viendo un temario más que un curso el cuál estoy pagando. En fín, voy a terminar el curso pero sé que varios más están con el mismo problema y sienta mal que algunos lo dejen a medias

Entiendo que la idea es fomentar el aprendizaje continuo, el esfuerzo y ser autodidacta, pero es que ni siquiera hay un video explicando qué se hizo … probablemente sea un error en los videos que se subieron, pero esto dificulta el aprendizaje de estos conceptos tan abstractos como lo son los patrones de diseño.

a mi me sale el error del private void OnFire