TEMA 8 CREACIÓN DEL GAMEMANAGER

Sin valoraciones

TEMA 8 CREACIÓN DEL GAMEMANAGER

CAPÍTULO 1 CONFIGURAR LOS GAME STATES

Un ‘GameManager’ en Unity se considera un script un poco especial, sería como el script que se con­sidera el principal. Como su nombre indica, que controla todo el juego.

Es un objeto que lo sabe todo y todo el mundo sabe de él y tiene que estar puesto en todos los scripts. Es muy útil para el seguimiento del estado del juego. Con esto nos referimos que el juego puede tener muchisimos estados como el estado jugando, el estado cargando, el estado pausado, el estado mostrando díalogos, el estado mostrando cinemáticas. Mantener un seguimiento de estos estados puede ayudar a activar y desactivar objetos o comportamientos en determinados momentos. Por ejemplo ahora mismo tal y como lo tenemos configurado el personaje no debería poder moverse en estado pausado pero lo hace así que vamos a arreglar esto

Vamos a ver como funciona esta nueva forma de controlar los estados de nuestro juego para ello nos iremos dentro de la carpeta Scripts>Utils y veremos si tenemos añadidos el GameStateCharge y el GameStateListener dentro de esta carpeta

TEMA 8 CREACIÓN DEL GAMEMANAGER

Y luego desde la carpeta de Scripts>ScriptableObjects

TEMA 8 CREACIÓN DEL GAMEMANAGER

Debemos tener el GameStateSO y el GameManagerSO

TEMA 8 CREACIÓN DEL GAMEMANAGER

Si abrimos el GameStateSO es basicamente no es nada, es un nombre.

TEMA 8 CREACIÓN DEL GAMEMANAGER

Y en la parte del menú create le estamos diciendo que cuando creemos desde unity un nuevo archivo de este tipo que lo almacene dentro de ScriptableObjects>Game State

Ahora si abrimos el GameManagerSO nos encontraremos con este código

TEMA 8 CREACIÓN DEL GAMEMANAGER

El asset que va a contener el estado actual del juego es un poquito más complejo

Basicamente tiene una variable llamada currentState que es digamos el estado actual

TEMA 8 CREACIÓN DEL GAMEMANAGER

Va a estar avisando a través de un canal de que el estado ha cambiado, el canal será el Broadcasting Events

Tenemos aquí el previousState que lo guardaremos en privado de ahí que sea private. Nos interesa para que cuando el estado cambie. Por ejemplo cuando pasemos del pausa a playing que se muestre ese cambio con respecto a cada estado

TEMA 8 CREACIÓN DEL GAMEMANAGER

Luego tenemos dos métodos publicos uno es el SetGameState. Dónde la primera línea de código nos dice que guarde el previousState si había alguno anteriormente.

TEMA 8 CREACIÓN DEL GAMEMANAGER

Despues comprueba que el estado actual sea el gameState. Y luego si el evento no está nulo, es decir avisa a todo el mundo a través del Raise del nuevo gameState que tenemos ahora mismo

TEMA 8 CREACIÓN DEL GAMEMANAGER

Y por último tenemos otro método publico llamado RestorePreviousState que lo que hace es coger el antiguo state, él que hemos guardado previamente

TEMA 8 CREACIÓN DEL GAMEMANAGER

Ahora vamos a ver el código que hay en el GameStateChanger

TEMA 8 CREACIÓN DEL GAMEMANAGER

Es un Monobehaviour esto quiere decir que lo podemos arrastrar a cualquier objeto

TEMA 8 CREACIÓN DEL GAMEMANAGER

La dependencia es el gameManager. Y desde fuera podemos decirle al SetGameState que añada el estado que nosotros le digamos al script desde la ventana del inspector.

Y por otro lado el método RestorePreviousState lo que hace es llamar al gameState desde un objeto que esté en la escena.

Y el listener es un poquito más complejo pero sirve para ayudarnos a configurar ciertos estados de una manera más rápida. Se ha puesto como listener al GameStateChanged que es el canal de eventos para escuchar el cambio de estado.

TEMA 8 CREACIÓN DEL GAMEMANAGER

Y después lo que hace es ir a la lista de componentes y ver si el nuevo GameState está activado o desactivado.

TEMA 8 CREACIÓN DEL GAMEMANAGER

Y también invocar las acciones que marcaremos en los campos que aparecerán dentro de nuestro objeto desde la ventana Inspector

TEMA 8 CREACIÓN DEL GAMEMANAGER

Ahora nos venimos a la carpeta de ScriptableObjects y creamos una nueva carpeta que llamaremos GameManager

TEMA 8 CREACIÓN DEL GAMEMANAGER

Dentro de esta carpeta pulsaremos al botón derecho del ratón y elegimos la opción de Create>ScriptableObject>GameManager

TEMA 8 CREACIÓN DEL GAMEMANAGER

Vamos a dejarlo tal como se ve:

TEMA 8 CREACIÓN DEL GAMEMANAGER

Crearemos varios estados, para ello repetimos el proceso de crear ScriptableObject pero ahora elegiremos la opción de Game State

TEMA 8 CREACIÓN DEL GAMEMANAGER

Dejaremos estos en total como Game State con los siguientes nombres:

TEMA 8 CREACIÓN DEL GAMEMANAGER

Ahora seleccionaremos el GameManager y lo abriremos desde la ventana del inspector

TEMA 8 CREACIÓN DEL GAMEMANAGER

 

El GameManager en Unity es a menudo un componente crucial que gestiona aspectos globales del juego, como la puntuación, el estado del juego, la gestión de niveles, y más:

1. Crear un objeto vacío para el GameManager:

1.1. En el Editor de Unity:

  • Crea un objeto vacío llamado «GameManager» en tu escena.

2. Crear el script GameManager:

2.1. Crea un nuevo script llamado «GameManager»:

  • Haz clic con el botón derecho en el Assets -> Create -> C# Script.
  • Nombre del script: GameManager.

2.2. Abre el script en tu editor de código preferido:

  • Define variables globales para gestionar el estado del juego, la puntuación, el tiempo, etc.
csharp
using UnityEngine; public class GameManager : MonoBehaviour { public static GameManager instance; // Variables de juego public int playerScore = 0; public bool isGameOver = false; private void Awake() { // Implementa el patrón Singleton para asegurar una única instancia del GameManager if (instance == null) { instance = this; } else { Destroy(gameObject); } } void Start() { // Inicializa cualquier configuración inicial del juego // Puedes cargar niveles, establecer valores predeterminados, etc. } void Update(){ // Aquí puedes verificar condiciones para el final del juego, actualizar puntuaciones, etc. if (isGameOver) { // Lógica para el final del juego } } // Otros métodos útilespublic void IncreaseScore(int amount) { // Método para aumentar la puntuación del jugadorplayerScore += amount; // Puedes añadir aquí lógica adicional, como actualizar la interfaz de usuario } public void GameOver() { // Método para llamar al final del juegoisGameOver = true; // Puedes realizar acciones adicionales, como mostrar un menú de fin de juego } }

3. Asignar el script al objeto GameManager:

3.1. Arrastra y suelta el script GameManager al objeto GameManager en tu escena.

4. Utilizar el GameManager desde otros scripts:

4.1. Accede al GameManager desde otros scripts:

  • Puedes acceder a la instancia del GameManager desde cualquier otro script usando GameManager.instance.
csharp
// Ejemplo de cómo aumentar la puntuación desde otro scriptGameManager.instance.IncreaseScore(10);

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