Resumen: pool de balas
Parte de la sección Arquitectura de juegos en Unity del Journey de Unity de Coddy. Lección 49 de 64.
El agrupamiento mantiene los objetos desactivados listos en lugar de destruirlos. Aquí, las balas del tanque provienen de ObjectPool de Unity y vuelven después de cada disparo.
Desafío
IntermedioHaz que el tanque dispare balas del grupo de objetos.
- En el
AwakedeTank, crea unObjectPool<Bullet>: actívalas al obtenerlas, desactívalas al liberarlas y destrúyelas al descartarlas; establecemaxSize: 4. - Al pulsar Espacio, obtén una bala, colócala 1 unidad por delante del tanque y pásale el grupo de objetos.
Bulletvuela en dirección +z aspeed; se libera a sí mismalifesegundos después de cada disparo o al golpear unTarget(llama aHit()).
Pulsa «Jugar» y dispara a ambos objetivos. Después, pulsa «Comprobar».
Pruébalo tú mismo
using UnityEngine;
using UnityEngine.Pool;
public class Bullet : MonoBehaviour
{
public float speed = 15f;
public float life = 1f;
// Vuela hacia adelante; vuelve al pool cuando impacte contra un Target o después de life segundos
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Arquitectura de juegos en Unity
1Componentes, no jerarquías
Componentes pequeñosUn script base para enemigosComponentes abstractosComponentes que trabajan juntosRepaso: torreta modularRepaso: cañón doble4Datos serializados
Clases serializablesListas en el InspectorEnumeraciones en el InspectorRepaso: tabla de botínRepaso: sortear el botín2Interfaces en Unity
IDamageableInterfaces y TryGetComponentGetComponentsRepaso: Tecla de interacciónRepaso: El más cercano al alcance5ScriptableObjects
Activos de datosEstadísticas de armasConfiguración compartidaGuardar el vientoOleadas como datosRepaso: base de datos de objetosRepaso: comprar en la tienda3Eventos
Eventos de C# en UnitySuscribirse en OnEnableCampos UnityEventLos eventos controlan la interfazRepaso: ventana emergente de logrosRepaso: temporizador de la ventana emergente6Guardar con JSON
JsonUtilityGuarda la partidaCargar y valores predeterminadosRepaso: espacios de guardadoElegir y eliminar un espacio9Pool de objetos
Por qué usar un pool de objetosUn pool con una colaObjectPool de UnityResumen: pool de balasPractica por tu cuenta: Playground de Unity