Skapa en enkel spelhanterare i Unity

En Game Manager i Unity är ett centralt skript eller system som övervakar och kontrollerar kärnmekaniken och logiken i ett spel. Det hanterar vanligtvis speltillstånd (t.ex. start, paus, slut), spelarframsteg, poäng, nivåer och globala inställningar. Spelhanteraren är avgörande för att säkerställa en ren struktur i ditt projekt och undvika överflödig kod. I den här handledningen skapar vi en grundläggande spelhanterare för att hantera spelstatus och poängspårning.

Steg 1: Konfigurera scenen

Börja med att förbereda en enkel Unity scen:

  1. Skapa ett nytt Unity 3D-projekt.
  2. Lägg till en grundläggande nivålayout, som ett Plane för marken och några objekt för spelelement.
  3. Skapa en UI Canvas för att visa information som partituren.

Steg 2: Skapa Game Manager-skriptet

Spelhanteraren kommer att vara en singel för att säkerställa att den är lättillgänglig och att det bara finns en instans genom hela spelet. Låt oss skriva manuset:

  1. Högerklicka i projektpanelen och välj Skapa > C#-skript. Namnge det GameManager.
  2. Öppna skriptet i din kodredigerare och ersätt dess innehåll med följande:
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
    }
}

Steg 3: Lägga till spelhanteraren till scenen

Låt oss nu lägga till spelhanteraren till scenen:

  1. Skapa ett tomt GameObject i hierarkin och döp det till GameManager.
  2. Dra och släpp GameManager-skriptet på GameObject.
  3. Se till att det inte finns några dubbletter av GameManager GameObjects i scenen.

Steg 4: Uppdatera Gameplay Logic

Låt oss använda spelhanteraren för att hantera spelarinteraktioner. Till exempel kommer vi att modifiera spelobjekt för att interagera med spelhanteraren:

  1. Skapa ett nytt skript som heter Target för objekt som spelaren kan interagera med.
  2. Använd följande kod för målskriptet:
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);
        }
    }
}

Detta skript förutsätter att spelaren interagerar med objekt genom att klicka på dem. Du kan anpassa det till spelets mekanik, som kollisioner eller triggers.

Steg 5: Visa poängen

Så här visar du poängen för spelaren:

  1. Skapa ett Text UI-element i Canvas och döp det till ScoreText.
  2. Skapa ett nytt skript som heter ScoreUI och bifoga det till Canvas.
  3. Använd följande kod för att uppdatera poängvisningen:
using UnityEngine;
using UnityEngine.UI;

public class ScoreUI : MonoBehaviour
{
    public Text scoreText;

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

Dra ScoreText UI-elementet till ScoreText-fältet i Inspector.

Steg 6: Testa spelhanteraren

Så här testar du din spelhanterare:

  1. Kör scenen och interagera med objekt som använder Target-skriptet.
  2. Observera att poängen uppdateras i användargränssnittet när du interagerar med mål.
  3. Anropa EndGame-metoden (t.ex. med en trigger eller knapp) för att testa att avsluta spelet.

Valfria förbättringar

Du kan utöka spelhanterarens funktionalitet med dessa funktioner:

  • Nivåhantering: Ladda nya nivåer eller återställ scenen när spelet är över.
  • Speltimer: Lägg till en nedräkningstimer för att utmana spelare.
  • Spara framsteg: Lagra och hämta spelarförlopp med PlayerPrefs eller ett sparsystem.
  • Pausmeny: Implementera en pausmeny för att stoppa spelet och visa alternativ.

Slutsats

Vi har skapat en enkel Game Manager för att hantera spelstatus och poängspårning i Unity. Game Manager centraliserar kärnlogiken, vilket gör ditt projekt mer organiserat och skalbart. Experimentera med ytterligare funktioner för att skräddarsy spelhanteraren efter ditt spels behov.