Creación de un gestor de juegos sencillo en Unity
Un Game Manager en Unity es un script o sistema central que supervisa y controla la mecánica y la lógica básicas de un juego. Normalmente, gestiona los estados del juego (por ejemplo, inicio, pausa, fin), el progreso del jugador, las puntuaciones, los niveles y las configuraciones globales. El Game Manager es crucial para garantizar una estructura limpia en su proyecto y evitar código redundante. En este tutorial, crearemos un Game Manager básico para gestionar el estado del juego y el seguimiento de las puntuaciones.
Paso 1: Preparación de la escena
Para comenzar, prepare una escena Unity sencilla:
- Crea un nuevo proyecto Unity 3D.
- Agrega un diseño de nivel básico, como un Avión para el suelo y algunos objetos para elementos de juego.
- Cree un UI Canvas para mostrar información como la puntuación.
Paso 2: Creación del script del administrador de juegos
El Game Manager será un singleton para garantizar que sea de fácil acceso y que solo exista una instancia en todo el juego. Escribamos el script:
- Haz clic derecho en el panel Proyecto y selecciona Crear > Script de C#. Asígnale el nombre GameManager.
- Abra el script en su editor de código y reemplace su contenido con lo siguiente:
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager Instance; // Singleton instance
public int score = 0; // Player's score
public bool isGameActive = true; // Is the game running?
void Awake()
{
// Ensure there is only one instance of GameManager
if (Instance == null)
{
Instance = this;
DontDestroyOnLoad(gameObject); // Persist across scenes
}
else
{
Destroy(gameObject); // Destroy duplicate instances
}
}
// Method to increase the score
public void AddScore(int points)
{
if (isGameActive)
{
score += points;
Debug.Log("Score: " + score);
}
}
// Method to end the game
public void EndGame()
{
isGameActive = false;
Debug.Log("Game Over!");
// Additional logic to handle game over, like displaying UI
}
}
Paso 3: Agregar el administrador de juegos a la escena
Ahora, agreguemos el Administrador de juegos a la escena:
- Crea un GameObject vacío en la jerarquía y nómbralo GameManager.
- Arrastre y suelte el script GameManager en GameObject.
- Asegúrese de que no haya GameObjects de GameManager duplicados en la escena.
Paso 4: Actualizar la lógica del juego
Utilicemos el Administrador de juegos para gestionar las interacciones de los jugadores. Por ejemplo, modificaremos los objetos del juego para que interactúen con el Administrador de juegos:
- Crea un nuevo script llamado Target para los objetos con los que el jugador puede interactuar.
- Utilice el siguiente código para el script de destino:
using UnityEngine;
public class Target : MonoBehaviour
{
public int pointValue = 10; // Points awarded for interacting with this target
void OnMouseDown()
{
if (GameManager.Instance.isGameActive)
{
// Add points to the score
GameManager.Instance.AddScore(pointValue);
// Destroy the target
Destroy(gameObject);
}
}
}
Este script asume que el jugador interactúa con los objetos haciendo clic en ellos. Puedes adaptarlo a la mecánica de tu juego, como colisiones o activadores.
Paso 5: Visualización de la puntuación
Para mostrar la puntuación al jugador:
- Cree un elemento de interfaz de usuario Text en el lienzo y nómbrelo ScoreText.
- Crea un nuevo script llamado ScoreUI y adjúntalo al Canvas.
- Utilice el siguiente código para actualizar la visualización de la puntuación:
using UnityEngine;
using UnityEngine.UI;
public class ScoreUI : MonoBehaviour
{
public Text scoreText;
void Update()
{
if (GameManager.Instance != null)
{
scoreText.text = "Score: " + GameManager.Instance.score;
}
}
}
Arrastre el elemento de interfaz de usuario ScoreText al campo ScoreText en el Inspector.
Paso 6: Probar el Game Manager
Para probar tu Game Manager:
- Ejecute la escena e interactúe con los objetos que usan el script Target.
- Observa la actualización de la puntuación en la interfaz de usuario a medida que interactúas con los objetivos.
- Llame al método EndGame (por ejemplo, usando un disparador o botón) para probar la finalización del juego.
Mejoras opcionales
Puedes ampliar la funcionalidad del Administrador de juegos con estas funciones:
- Gestión de niveles: Cargar nuevos niveles o reiniciar la escena al finalizar el juego.
- Temporizador de juego: Agrega un temporizador de cuenta regresiva para desafiar a los jugadores.
- Guardar progreso: Almacena y recupera el progreso del jugador usando PlayerPrefs o un sistema de guardado.
- Menú de pausa: Implementa un menú de pausa para detener el juego y mostrar opciones.
Conclusión
Hemos creado un Game Manager simple para administrar el estado del juego y el seguimiento de la puntuación en Unity. El Game Manager centraliza la lógica básica, lo que hace que tu proyecto sea más organizado y escalable. Experimenta con funciones adicionales para adaptar el Game Manager a las necesidades de tu juego.