Contenido del curso
Empezando Nuestro Proyecto
Teoría de Gameplay
Mecánica Principal
- 8

Crea la cuadrícula del juego en Unity
07:59 min - 9

Cámara ortográfica automática en Unity
13:06 min - 10

Sistema de coordenadas para piezas en Unity
05:16 min - 11

Piezas aleatorias en la cuadrícula Unity
13:39 min - 12

Mover piezas en Unity con DOTween
07:52 min - 13

Intercambio de piezas con arrays 2D en Unity
14:45 min - 14

Permitiendo solo ciertos tipos de movimientos
05:38 min - 15

Lógica de Match 3 en cuatro direcciones
16:11 min - 16

Detectar Match 3 con corrutinas en Unity
10:21 min - 17

Evitar matches por defecto en Match 3
12:29 min - 18

Colapso de columnas en un Match 3
17:31 min - 19

Combos automáticos en Match 3 con corrutinas
07:46 min - 20

Corrutinas para animar piezas en Match 3
07:35 min - 21

Mejorando la animación de las piezas
07:37 min
Publicacion
Diseño del juego
- 24

Hablemos de diseño
01:34 min - 25

Agregando un sistema de puntos
16:45 min - 26

Sistema de tiempo
07:05 min - 27

Interfaz para el sistema de tiempo
09:26 min - 28

Creando sistema de UI
06:26 min - 29

Sistema de UI reactivo al estado del juego
14:36 min - 30

Agregando funcionalidad a la pantalla de game over
09:16 min - 31

Cómo reiniciar board y puntos en Unity
08:39 min - 32

Agregando audio
10:05 min - 33

Terminando el juego
Viendo ahora
Conclusiones
Terminando el juego
Resumen
Crear una pantalla de inicio en Unity es el paso final para cerrar el gameplay loop de un juego móvil tipo match. Aquí aprendes a configurar el estado inicial del Game Manager, duplicar pantallas de UI y conectar botones para iniciar, reiniciar y salir del juego sin romper la lógica.
¿Cómo configurar el estado inicial del Game Manager?
Antes de tocar la UI, el primer ajuste ocurre en el Game Manager. Hasta ahora el estado por defecto era in game, pero eso hace que al dar play el contador arranque solo y las piezas se generen sin control.
La solución es cambiar ese estado por defecto a idle [00:20]. Así, cuando presionas play en Unity, el juego espera. Nada se mueve hasta que el jugador decida empezar desde la pantalla de inicio.
¿Qué es el estado idle en un Game Manager? Es un estado de espera donde el juego está cargado pero no activo. No corre el contador, no se generan piezas y la lógica principal queda pausada hasta recibir una acción del jugador.
¿Cómo duplicar la UI de Game Over para crear la pantalla de inicio?
La pantalla de inicio comparte estructura con la de game over, así que duplicarla con Ctrl+D o Cmd+D ahorra trabajo. Al duplicado le pones un nombre claro, por ejemplo UI Start Screen.
Desde ahí aplicas estos cambios visuales y de contenido:
- Cambiar el color de fondo a blanco.
- Reemplazar el título Game Over por el nombre del juego, en este caso Safari Match.
- Subir el contenedor a 100% de opacidad.
- Eliminar los puntos, que no aplican antes de jugar.
- Borrar uno de los dos botones y dejar solo el botón de inicio.
- Renombrar ese botón a BTN Start Game con el texto Start.
- Cambiar el color del título de rojo a un azul más amable.
Después de editar, desactivas momentáneamente la UI de game over mientras trabajas, pero recuerda reactivarla antes de probar.
¿Qué componentes necesita la nueva pantalla?
A la UI Start Screen le quitas el componente Game Over con remove component, porque hereda lógica que no le corresponde [01:55]. Luego, en su UI Screen Component, cambias el visible state de game over a idle. Con esto, la pantalla solo aparece cuando el juego está en estado idle.
¿Cómo conectar el botón Start con el Game Manager?
Si presionas Start en este punto, no pasa nada. Falta el script que conecta el botón con el flujo del juego. En la carpeta de scripts creas uno nuevo llamado UI Start Screen.
El script es directo. Solo necesita una función pública:
csharp public void StartBtnClicked() { GameManager.Instance.StartGame(); }
Esta función se ejecuta cuando el jugador toca el botón y le pide al Game Manager que arranque el juego mediante una nueva función llamada StartGame.
¿Para qué sirve GameManager.Instance? Es la referencia al singleton del Game Manager, un patrón que permite acceder al mismo objeto desde cualquier script sin crear copias. Así centralizas la lógica del juego en un solo lugar.
¿Qué lógica debe tener la función StartGame?
En el Game Manager ya existían RestartGame y ExitGame. Ahora agregas StartGame arriba con esta lógica:
- Cambiar el gameState a
GameState.InGame. - Invocar el evento
onGameStateUpdated?.Invoke(gameState)para notificar al resto del sistema. - Reiniciar el currentTimeToMatch a cero.
- Reiniciar los puntos a cero.
Esta función se parece mucho a RestartGame, y en un juego sencillo podrías reutilizarla. Pero la recomendación es mantener funciones separadas para iniciar y reiniciar, porque en juegos más complejos hay acciones que solo deben ocurrir al inicio, como cargar tutoriales o configuraciones iniciales.
¿Qué hace la función ExitGame?
Cuando el jugador sale del juego desde la pantalla de game over, ExitGame devuelve todo a su lugar [03:30]:
- Cambia el gameState a
GameState.Idle. - Reinicia los puntos.
- Invoca
onGameStateUpdatedcon el nuevo estado.
Esto cierra el ciclo y devuelve al jugador a la pantalla de inicio.
¿Cómo conectar el botón en Unity y probar el juego?
De vuelta en Unity, agregas el componente UI Start Screen al objeto correspondiente. En el botón Start Game, dentro de su On Click Event, arrastras la UI Start Screen y seleccionas la función StartBtnClicked.
Al probar puede aparecer un bug típico: el juego inicia y termina al instante. La causa es asignar currentTimeToMatch = 9 en lugar de cero dentro de StartGame [04:25]. Corriges el valor a cero, guardas y vuelves a probar.
Con el ajuste, el flujo queda completo:
- Aparece la pantalla de inicio con el título del juego.
- Presionas Start y comienza el gameplay con contador activo.
- Haces matches, sumas puntos y encadenas combos.
- Al perder, aparece la pantalla de game over con tu puntaje.
- Presionas Exit Game y regresas a la pantalla de inicio.
Ese ciclo es lo que se conoce como gameplay loop cerrado, el corazón de cualquier juego móvil funcional. Con pantalla de inicio, gameplay principal y pantalla de game over, tu Safari Match ya está terminado.
¿Cómo te sientes ahora que tienes un juego completo para teléfonos móviles? Cuéntame en los comentarios qué fue lo más retador de cerrar el loop.