Creazione di un semplice gestore di giochi in Unity

Un Game Manager in Unity è uno script o sistema centrale che supervisiona e controlla le meccaniche e la logica di base di un gioco. In genere gestisce gli stati del gioco (ad esempio, inizio, pausa, fine), i progressi del giocatore, i punteggi, i livelli e le impostazioni globali. Il Game Manager è fondamentale per garantire una struttura pulita nel tuo progetto ed evitare codice ridondante. In questo tutorial, creeremo un Game Manager di base per gestire lo stato del gioco e il monitoraggio dei punteggi.

Fase 1: Impostazione della scena

Per iniziare, prepara una semplice scena Unity:

  1. Crea un nuovo progetto Unity 3D.
  2. Aggiungere una disposizione di livello base, come un Piano per il terreno e alcuni oggetti per gli elementi di gioco.
  3. Crea un'interfaccia utente Canvas per visualizzare informazioni come il punteggio.

Fase 2: creazione dello script del Game Manager

Il Game Manager sarà un singleton per garantire che sia facilmente accessibile e che esista una sola istanza nel gioco. Scriviamo lo script:

  1. Fare clic con il pulsante destro del mouse nel pannello Progetto e selezionare Crea > Script C#. Assegnare il nome GameManager.
  2. Apri lo script nel tuo editor di codice e sostituisci il suo contenuto con quanto segue:
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
    }
}

Passaggio 3: aggiunta del Game Manager alla scena

Ora aggiungiamo il Game Manager alla scena:

  1. Crea un GameObject vuoto nella Gerarchia e chiamalo GameManager.
  2. Trascina e rilascia lo script GameManager su GameObject.
  3. Assicurarsi che non vi siano GameObjects GameManager duplicati nella scena.

Fase 4: Aggiornamento della logica di gioco

Usiamo il Game Manager per gestire le interazioni dei giocatori. Ad esempio, modificheremo gli oggetti di gioco per interagire con il Game Manager:

  1. Crea un nuovo script chiamato Target per gli oggetti con cui il giocatore può interagire.
  2. Utilizzare il seguente codice per lo script Target:
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);
        }
    }
}

Questo script presuppone che il giocatore interagisca con gli oggetti cliccandoci sopra. Puoi adattarlo alle meccaniche del tuo gioco, come collisioni o trigger.

Fase 5: Visualizzazione del punteggio

Per mostrare il punteggio al giocatore:

  1. Crea un elemento UI Text nel Canvas e chiamalo ScoreText.
  2. Crea un nuovo script chiamato ScoreUI e allegalo al Canvas.
  3. Utilizzare il seguente codice per aggiornare la visualizzazione del punteggio:
using UnityEngine;
using UnityEngine.UI;

public class ScoreUI : MonoBehaviour
{
    public Text scoreText;

    void Update()
    {
        if (GameManager.Instance != null)
        {
            scoreText.text = "Score: " + GameManager.Instance.score;
        }
    }
}

Trascinare l'elemento ScoreText UI nel campo ScoreText nell'Inspector.

Fase 6: Test del Game Manager

Per testare il tuo Game Manager:

  1. Esegui la scena e interagisci con gli oggetti che utilizzano lo script Target.
  2. Osserva l'aggiornamento del punteggio nell'interfaccia utente mentre interagisci con gli obiettivi.
  3. Chiama il metodo EndGame (ad esempio, utilizzando un trigger o un pulsante) per testare la conclusione del gioco.

Miglioramenti opzionali

È possibile espandere le funzionalità del Game Manager con le seguenti funzionalità:

  • Gestione livelli: Carica nuovi livelli o ripristina la scena alla fine della partita.
  • Timer di gioco: Aggiungi un timer per il conto alla rovescia per sfidare i giocatori.
  • Salvataggio dei progressi: Memorizza e recupera i progressi del giocatore utilizzando PlayerPrefs o un sistema di salvataggio.
  • Menu di pausa: Implementa un menu di pausa per interrompere il gioco e mostrare le opzioni.

Conclusione

Abbiamo creato un semplice Game Manager per gestire lo stato del gioco e il tracciamento dei punteggi in Unity. Il Game Manager centralizza la logica di base, rendendo il tuo progetto più organizzato e scalabile. Sperimenta funzionalità aggiuntive per adattare il Game Manager alle esigenze del tuo gioco.