Erstellen eines einfachen Spielemanagers in Unity

Ein Game Manager in Unity ist ein zentrales Skript oder System, das die Kernmechanik und -logik eines Spiels überwacht und steuert. Es verwaltet normalerweise Spielzustände (z. B. Start, Pause, Ende), Spielerfortschritt, Punktestände, Level und globale Einstellungen. Der Game Manager ist entscheidend, um eine saubere Struktur in Ihrem Projekt sicherzustellen und redundanten Code zu vermeiden. In diesem Tutorial erstellen wir einen einfachen Game Manager zur Verwaltung des Spielzustands und der Punkteverfolgung.

Schritt 1: Einrichten der Szene

Bereiten Sie zunächst eine einfache Unity-Szene vor:

  1. Erstellen Sie ein neues Unity 3D-Projekt.
  2. Fügen Sie ein grundlegendes Level-Layout hinzu, etwa ein Plane für den Boden und einige Objekte für Gameplay-Elemente.
  3. Erstellen Sie ein UI-Canvas, um Informationen wie den Punktestand anzuzeigen.

Schritt 2: Erstellen des Game Manager-Skripts

Der Game Manager wird ein Singleton sein, um sicherzustellen, dass er leicht zugänglich ist und während des gesamten Spiels nur eine Instanz existiert. Schreiben wir das Skript:

  1. Klicken Sie mit der rechten Maustaste in das Projektfenster und wählen Sie Erstellen > C#-Skript. Nennen Sie es GameManager.
  2. Öffnen Sie das Skript in Ihrem Code-Editor und ersetzen Sie seinen Inhalt durch Folgendes:
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
    }
}

Schritt 3: Den Game Manager zur Szene hinzufügen

Fügen wir nun den Game Manager zur Szene hinzu:

  1. Erstellen Sie ein leeres GameObject in der Hierarchie und nennen Sie es GameManager.
  2. Ziehen Sie das Skript GameManager per Drag & Drop auf das GameObject.
  3. Stellen Sie sicher, dass in der Szene keine doppelten GameManager-GameObjects vorhanden sind.

Schritt 4: Aktualisieren der Spiellogik

Lassen Sie uns den Game Manager nutzen, um Spielerinteraktionen zu handhaben. Beispielsweise ändern wir Gameplay-Objekte, um mit dem Game Manager zu interagieren:

  1. Erstellen Sie ein neues Skript namens Ziel für Objekte, mit denen der Spieler interagieren kann.
  2. Verwenden Sie den folgenden Code für das Zielskript:
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);
        }
    }
}

Dieses Skript geht davon aus, dass der Spieler mit Objekten interagiert, indem er auf sie klickt. Sie können es an die Mechanik Ihres Spiels anpassen, beispielsweise an Kollisionen oder Auslöser.

Schritt 5: Anzeige des Punktestands

So zeigen Sie dem Spieler den Punktestand an:

  1. Erstellen Sie im Canvas ein Text-UI-Element und nennen Sie es ScoreText.
  2. Erstellen Sie ein neues Skript namens ScoreUI und hängen Sie es an das Canvas an.
  3. Verwenden Sie den folgenden Code, um die Punkteanzeige zu aktualisieren:
using UnityEngine;
using UnityEngine.UI;

public class ScoreUI : MonoBehaviour
{
    public Text scoreText;

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

Ziehen Sie das ScoreText-UI-Element in das Feld ScoreText im Inspektor.

Schritt 6: Testen des Game Managers

So testen Sie Ihren Game Manager:

  1. Führen Sie die Szene aus und interagieren Sie mit Objekten, die das Zielskript verwenden.
  2. Beobachten Sie, wie sich die Punktzahl in der Benutzeroberfläche aktualisiert, während Sie mit Zielen interagieren.
  3. Rufen Sie die Methode EndGame auf (z. B. mithilfe eines Auslösers oder einer Schaltfläche), um das Beenden des Spiels zu testen.

Optionale Erweiterungen

Sie können die Funktionalität des Game Managers mit diesen Features erweitern:

  • Level-Management: Neue Level laden oder die Szene bei Game Over zurücksetzen.
  • Spiel-Timer: Fügen Sie einen Countdown-Timer hinzu, um Spieler herauszufordern.
  • Fortschritt speichern: Speichern und Abrufen des Spielerfortschritts mit PlayerPrefs oder einem Speichersystem.
  • Pausenmenü: Implementieren Sie ein Pausenmenü, um das Spiel zu stoppen und Optionen anzuzeigen.

Abschluss

Wir haben einen einfachen Game Manager erstellt, um den Spielstatus und die Punkteverfolgung in Unity zu verwalten. Der Game Manager zentralisiert die Kernlogik und macht Ihr Projekt besser organisiert und skalierbar. Experimentieren Sie mit zusätzlichen Funktionen, um den Game Manager an die Anforderungen Ihres Spiels anzupassen.