CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

Sin valoraciones

CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

Vamos a arrastrar el script TimeManager dentro de la carpeta Scripts>Managers desde nuestra carpeta de recursos que tenemos en la carpeta de material.

CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

Si lo abrimos nos encontraremos con estas pocas líneas de código. Tenemos una función pública llamada SetTimeScale que nos marca una variable pública de tipo float, es decir decimal, llamada scale

CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

Este scale nos está marcando la velocidad o la escala de velocidad dentro de Unity

Esto quiere decir que si le pasamos un 1 Unity irá a un tiempo normal pero si por ejemplo le pasamos un 0 pausara todo lo que tenga que ver con tiempo.

Tendremos la escena de Town abierta en este momento y dentro de ella arrastraremos la escena de Gameplay. Así que abrimos la carpeta de Escenas y cogeremos la que pone Gameplay.

CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

Sin dejar de seleccionar la escena Gameplay pulsaremos con el botón derecho dentro de nuestra ventana de Jerarquía y seleccionamos la opción de Create Empty es decir que crearemos un objeto vacio dentro de nuestra escena al cúal llamaremos TimeManager

CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

Abierto este objeto vacio, al cual hemos llamado TimeManager, en la ventana de Inspector le añadimos el componente o script de TimeManager

CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

Reseteamos su posición para que esta esté en 0 0

CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

Y desde el inspector agregamos una nueva dependencia

CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

Y a su método o función le decimos que sea TimeManager>SetTimeScale

CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

Y lo dejamos a 0 para que así pare el tiempo del juego

CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

Hecho esto deberemos repetir el mismo proceso para el botón MainMenu

CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

CAPÍTULO 2 CONFIGURAR EL GAMEMANAGER LISTENERS

Guardaremos los cambios efectuados en nuestra escena Gameplay y posteriormente la quitaremos de la ventana de la jerarquía

 

1. Crear un Evento en el GameManager:

csharp
using UnityEngine; using UnityEngine.Events; public class GameManager : MonoBehaviour {public static GameManager instance; // Evento para notificar el final del juego publicUnityEvent onGameOver = new UnityEvent(); private void Awake() { // Implementa el patrón Singleton para asegurar una única instancia del GameManager if (instance == null) { instance = this; } else { Destroy(gameObject); } } // Resto del código del GameManager...}

2. Emitir el Evento cuando se Cumpla una Condición:

csharp
public class EnemyController : MonoBehaviour { void Update() { // Ejemplo: Emite el evento de final del juego si todos los enemigos han sido derrotados if(TodosLosEnemigosDerrotados()) { GameManager.instance.onGameOver.Invoke(); } } boolTodosLosEnemigosDerrotados() { // Lógica para verificar si todos los enemigos han sido derrotados // Devuelve true si todos están derrotados, de lo contrario, devuelve falsereturn true; // Ejemplo: Siempre devuelve true para este ejemplo } }

3. Agregar Listeners para el Evento en Otros Objetos:

Puedes agregar listeners en otros scripts que necesiten responder al evento del GameManager.

csharp
public class UIManager : MonoBehaviour { void Start() { // Ejemplo: Suscribirse al evento de fin del juego GameManager.instance.onGameOver.AddListener(OnGameOver); } voidOnGameOver() { // Lógica para gestionar el fin del juego Debug.Log("Fin del juego"); } }

4. Limpiar Listeners:

Para evitar problemas de memoria y posibles fugas, asegúrate de limpiar los listeners cuando ya no sean necesarios. Esto puede hacerse en el método OnDestroy o cuando sea apropiado.

csharp
public class UIManager : MonoBehaviour { void Start() { // Suscribirse al evento de fin del juego GameManager.instance.onGameOver.AddListener(OnGameOver); } void OnGameOver() {// Lógica para gestionar el fin del juego Debug.Log("Fin del juego"); } void OnDestroy(){ // Limpiar el listener al destruir el objetoGameManager.instance.onGameOver.RemoveListener(OnGameOver); } }

Compártelo en tus redes

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest

Valore este curso

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestra web. Si sigues utilizando este sitio asumimos que estás de acuerdo. VER