Controlar los estados de un videojuego en Unity es clave para una experiencia fluida. Aquí verás cómo pasar del estado de menú a estado de juego con una tecla, usando un GameManager y métodos simples como startGame, gameOver y backToMenu. Todo está enfocado a construir una base sólida y escalable hacia UI y más plataformas.
¿Cómo iniciar desde un estado de menú en Unity?
Por defecto, el GameManager arranca en menú/pausa. En lugar de comenzar con el protagonista moviéndose, se propone escuchar una tecla en Update para iniciar la partida. Además, es buena práctica limpiar el código: eliminar la instancia compartida usada para arrancar al tocar el suelo y quitar los TODOs completados.
La lógica mínima en el controlador del jugador es escuchar la tecla y arrancar:
void Update()
{
if (Input.GetKeyDown(KeyCode.S))
{
startGame();
}
}
- Estado inicial: menú pausado.
- Acción del usuario: pulsar S.
- Efecto: llamar a startGame para cambiar a juego.
¿Qué hace cada método de cambio de estado?
Cada método delega el cambio real en un único punto de verdad: setGameState. Así se mantiene el control centralizado y el código claro. Los métodos propuestos son directos y legibles.
public void startGame()
{
setGameState(GameState.InGame);
}
public void gameOver()
{
setGameState(GameState.GameOver);
}
public void backToMenu()
{
setGameState(GameState.Menu);
}
- Un solo responsable del cambio: setGameState.
- Estados del flujo: Menu, InGame, GameOver.
- Beneficio: transiciones consistentes y fáciles de extender.
¿Por qué centralizar el setGameState?
- Evita duplicar lógica en varios sitios.
- Facilita depuración y futuras reglas de transición.
- Permite añadir efectos globales: pausa, UI, audio.
¿Qué teclas y flujos puedes probar ahora?
Además de usar S para iniciar, puedes habilitar una tecla para volver al menú. Por ejemplo, P para pausar y regresar. Esto refuerza el patrón de estados y sienta bases para migrar luego a botones e interfaces gráficas.
void Update()
{
if (Input.GetKeyDown(KeyCode.S))
{
startGame();
}
if (Input.GetKeyDown(KeyCode.P))
{
backToMenu();
}
}
- S: pasar de menú a juego.
- P: volver del juego al menú.
- Próximo paso: reemplazar teclado por UI con botones.
- Objetivo: escalar a cualquier plataforma con herramientas de Unity.
¿Te gustaría ver ejemplos con UI y botones para estos estados o integrar un flujo de pausa completa? Cuéntame qué necesitas y lo preparamos.