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
Introducción
Todo lo que aprenderás para programar videojuegos 2D con Unity
Consejos de design: preparación de Assets y versionamiento de Unity
Timeline
Mejorando el flujo de Visual Studio
Tips en Visual Studio Debug.Log vs. breakpoint
Atributos en Unity
Atributos en Unity (herramientas)
Ternary Operations
Programación
Arrays, listas
Diccionarios
New Input System
Matemáticas para juegos: vectores
Matemáticas para juegos: personaje
Pathfinding - IA
Animation Events
Tween
Tweening
Movimientos básicos y cambio de variables en el tiempo
Transiciones
Callbacks
Web requests y eventos
Conexiones con API
JSON
JSON: cambio de clima
Delegates
Eventos
Introducción a los patrones de diseño
¿Qué son los patrones de diseño y para qué sirven?
Singleton
Object Pool I
Object Pool II
Observer
FÃsicas 2D
Effectors
Buoyancy
Extra
No parar de aprender: Jams
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 2
Preguntas 1
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;
}
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. RegÃstrate o inicia sesión para participar.