
Lección 5.4: ¿Cuál es la dificultad?
Tutorial
Beginner
+10XP
60 mins
(331)
Unity Technologies

Descripción general:
¡Llegamos a la última lección! Para completar nuestro juego agregaremos un menú y algo parecido a una pantalla de título. Crearás tu propio título y darás estilo al texto para que se vea bien. Crearás tres nuevos botones para elegir la dificultad del juego. Entre más alta sea la dificultad, más rápido se generarán los objetivos.
Resultado del proyecto:
Al iniciar el juego se abrirá un hermoso menú donde se mostrará el título de forma prominente y tres botones de selección de dificultad en la parte inferior de la pantalla. Cada dificultad afectará el ritmo en que se generen los objetivos, lo cual exigirá tener mayor habilidad para evitar que los objetivos «buenos» caigan.
1. ¿Cómo crear el texto del título y los botones del menú?
Lo primero que debemos hacer es crear todos los elementos de la interfaz de usuario que vamos a necesitar. Esto incluye un título grande y tres botones de dificultad.
- Duplica tu texto Game Over para crear tu Title Text, editar su nombre, texto y todos sus atributos.
- Duplica tu Restart Button y edita sus atributos para crear un botón «Easy».
- Edita y duplica el nuevo botón Easy para crear un botón «Medium» y un botón «Hard».
2. ¿Cómo agregar un Script DifficultyButton?
Nuestros botones de dificultad se ven muy bien, pero en realidad no hacen nada. Si van a tener una nueva funcionalidad personalizada, primero necesitamos darles un nuevo Script.
- Para los 3 nuevos botones, en el componente Button, en la sección On Click (), haz clic en el botón menos (-) para eliminar la funcionalidad RestartGame.
- Crea un nuevo Script DifficultyButton.cs y adjúntalo a los 3 botones.
- Agrega using UnityEngine.UI a tus importaciones.
- Crea una nueva variable private Button button; e inicialízala en Start().
3. ¿Cómo llamar SetDifficulty al hacer clic en el botón?
Ya que tenemos un Script para nuestros botones, podemos crear un método SetDifficulty y ligar ese método al clic de dichos botones.
- Crea una nueva función void SetDifficulty y dentro Debug.Log(gameObject.name + " was clicked");.
- Agrega el button receptor para hacer la llamada de la función SetDifficulty.
4. ¿Cómo hacer que tus botones inicien el juego?
La pantalla del título se ve excelente si ignoras los objetivos moviéndose por todos lados, pero no tenemos forma de iniciar el juego en realidad. Necesitamos una función StartGame que pueda comunicarse con SetDifficulty.
- En GameManager.cs, crea una nueva función public void StartGame() y mueve todo lo que hay en Start() ahí.
- En DifficultyButton.cs, crea un nuevo private GameManager gameManager; e inicialízalo en Start().
- En la función SetDifficulty() llama a gameManager.StartGame();.
5. ¿Cómo desactivar la pantalla del título al iniciar el juego?
Si queremos que la pantalla del título desaparezca cuando el juego comienza, debemos almacenarla en un objeto vacío en lugar de desactivarla de forma individual. Simplemente desactivar un solo objeto vacío primario requiere mucho menos esfuerzo.
- Haz clic derecho en el Canvas y Create > Empty Object, cambia el nombre a «Title Screen» y arrastra los 3 botones y el título ahí.
- En GameManager.cs, crea un nuevo public GameObject titleScreen; y asígnalo en el Inspector.
- En StartGame(), desactiva el objeto de la pantalla de título.
6. ¿Cómo utilizar un parámetro para cambiar la dificultad?
Los botones de dificultad inician el juego, pero todavía no cambian la dificultad del juego. Lo último que tenemos que hacer es lograr que los botones de dificultar realmente afecten la frecuencia con la que se generan los objetivos.
- En DifficultyButton.cs, crea una nueva variable public int difficulty, después en el Inspector, asigna la dificultad Easy como 1, Medium como 2 y Hard como 3.
- Agrega un parámetro int difficulty a la función StartGame().
- En StartGame(), define spawnRate /= difficulty;.
- Corrige el error en DifficultyButton.cs al pasar el parámetro de dificultad a StartGame(difficulty).
7. Resumen de la lección
Nueva funcionalidad
- Pantalla de título que permite al usuario iniciar el juego
- Selección de dificultad que afecta la frecuencia de generación
Nuevos conceptos y habilidades:
- AddListener()
- Pasar parámetros entre scripts
- Operador Divide/Assign (/=)
- Agrupar objetos secundarios