Patrones en Unity: Singleton y State Machine

Organiza sistemas globales y comportamientos complejos con patrones de diseño aplicados al desarrollo real en Unity.

Singleton resuelve casos donde necesitas una única instancia global, como `GameManager`, audio maestro o progreso de sesión.

State Machine evita cadenas enormes de condicionales al modelar comportamientos por estados explícitos (Idle, Chase, Attack).

Usar patrones no es copiar plantillas: es decidir cuándo reducen complejidad y cuándo introducirían sobrearquitectura.

Según `contenido.md`, esta lección es clave para estructurar lógicas complejas de IA y estado global del juego.

  • Úsalo para coordinar sistemas globales, no para esconder dependencias en todo el proyecto.
  • Un Singleton en Unity suele definirse con un campo `static Instance` y validación en `Awake()` para impedir duplicados.
  • `DontDestroyOnLoad` permite mantener esa instancia viva al cambiar de escena, útil para audio o estado de partida.
  • Si todo termina accediendo al Singleton, revisa diseño: puede convertirse en acoplamiento excesivo si no delimitas responsabilidades.
  • Una sola instancia global controlada.

Singleton en contexto real

Úsalo para coordinar sistemas globales, no para esconder dependencias en todo el proyecto.

Un Singleton en Unity suele definirse con un campo `static Instance` y validación en `Awake()` para impedir duplicados.

`DontDestroyOnLoad` permite mantener esa instancia viva al cambiar de escena, útil para audio o estado de partida.

Si todo termina accediendo al Singleton, revisa diseño: puede convertirse en acoplamiento excesivo si no delimitas responsabilidades.

  • Una sola instancia global controlada.
  • Persistencia opcional entre escenas.
  • Evitar convertirlo en un objeto dios.

State Machine para IA y flujo de gameplay

Cuando un sistema crece, modelar estados explícitos simplifica decisiones y depuración.

Con una máquina de estados defines qué puede hacer cada entidad en cada momento y qué dispara el cambio de estado.

Esto reduce `if/else` anidados y hace más sencillo añadir nuevos comportamientos sin romper lo existente.

En NPCs típicos puedes pasar de `Patrol` a `Chase` y luego a `Attack` según distancia, línea de visión o vida.

Errores frecuentes al aplicar patrones

El patrón correcto mal aplicado puede empeorar el sistema.

Crear Singletons para todo complica pruebas y acopla módulos que deberían ser independientes.

Una State Machine sin límites claros de transición puede provocar bugs difíciles de reproducir.

Define reglas de transición explícitas y registra cambios de estado en consola durante fases de debug.

Unity
16

Patrones en Unity: Singleton y State Machine

Organiza sistemas globales y comportamientos complejos con patrones de diseño aplicados al desarrollo real en Unity.

Código del tema: GameObject + Component = comportamiento

📘 Teoría

Singleton en contexto real

Úsalo para coordinar sistemas globales, no para esconder dependencias en todo el proyecto.

Un Singleton en Unity suele definirse con un campo `static Instance` y validación en `Awake()` para impedir duplicados.

`DontDestroyOnLoad` permite mantener esa instancia viva al cambiar de escena, útil para audio o estado de partida.

Si todo termina accediendo al Singleton, revisa diseño: puede convertirse en acoplamiento excesivo si no delimitas responsabilidades.

  • Una sola instancia global controlada.
  • Persistencia opcional entre escenas.
  • Evitar convertirlo en un objeto dios.

State Machine para IA y flujo de gameplay

Cuando un sistema crece, modelar estados explícitos simplifica decisiones y depuración.

1

Con una máquina de estados defines qué puede hacer cada entidad en cada momento y qué dispara el cambio de estado.

2

Esto reduce `if/else` anidados y hace más sencillo añadir nuevos comportamientos sin romper lo existente.

3

En NPCs típicos puedes pasar de `Patrol` a `Chase` y luego a `Attack` según distancia, línea de visión o vida.

Errores frecuentes al aplicar patrones

El patrón correcto mal aplicado puede empeorar el sistema.

1

Crear Singletons para todo complica pruebas y acopla módulos que deberían ser independientes.

2

Una State Machine sin límites claros de transición puede provocar bugs difíciles de reproducir.

3

Define reglas de transición explícitas y registra cambios de estado en consola durante fases de debug.

🧪 Aprende probando

Ejemplo Ejemplo guiado Implementa un `GameManager` singleton persistente entre escenas con validación de duplicados.

🏁 Retos

Reto Reto práctico Combina un Singleton básico con una State Machine que use `switch` para gestionar estados de un enemigo.

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros. culTest

La hice en febrero de 2026 para facilitar el aprendizaje de mis alumnos. La idea es aprender desarrollo web practicando y que el proyecto siga creciendo con nuevos temas, tests y retos.

Está inspirada en MDN, W3Schools, CodePen, Manz y muchos otros sitios de documentación sobre desarrollo web. Quería combinar teoría útil, ejemplos ejecutables, retos y el sistema de tests que ya tenía en culTest. culTest

Si te gustó, si no te gustó o si quieres escribirme, puedes hacerlo en cristianeslava@gmail.com