Oprettelse af en simpel Game Manager i Unity

En Game Manager i Unity er et centralt script eller system, der overvåger og styrer kernemekanikken og logikken i et spil. Det administrerer typisk spiltilstande (f.eks. start, pause, slut), spillerens fremskridt, scoringer, niveauer og globale indstillinger. Game Manager er afgørende for at sikre en ren struktur i dit projekt og undgå overflødig kode. I denne tutorial opretter vi en grundlæggende Game Manager til at håndtere spiltilstand og sporing af score.

Trin 1: Opsætning af scenen

For at begynde skal du forberede en simpel Unity scene:

  1. Opret et nyt Unity 3D projekt.
  2. Tilføj et grundlæggende niveaulayout, såsom et Plane til jorden og et par objekter til gameplay-elementer.
  3. Opret et UI-lærred for at vise information som partituret.

Trin 2: Oprettelse af Game Manager-scriptet

Game Manager vil være en singleton for at sikre, at den er let tilgængelig, og at der kun eksisterer én instans i hele spillet. Lad os skrive manuskriptet:

  1. Højreklik i projektpanelet og vælg Opret > C# Script. Navngiv den GameManager.
  2. Åbn scriptet i din kodeeditor og erstat dets indhold med følgende:
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
    }
}

Trin 3: Tilføjelse af Game Manager til scenen

Lad os nu tilføje Game Manager til scenen:

  1. Opret et tomt GameObject i hierarkiet, og navngiv det GameManager.
  2. Træk og slip GameManager scriptet på GameObject.
  3. Sørg for, at der ikke er nogen duplikerede GameManager GameObjects i scenen.

Trin 4: Opdatering af Gameplay Logic

Lad os bruge Game Manager til at håndtere spillerinteraktioner. For eksempel vil vi ændre gameplay-objekter til at interagere med Game Manager:

  1. Opret et nyt script kaldet Target for objekter, som spilleren kan interagere med.
  2. Brug følgende kode til Target-scriptet:
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);
        }
    }
}

Dette script antager, at spilleren interagerer med objekter ved at klikke på dem. Du kan tilpasse det til dit spils mekanik, såsom kollisioner eller triggere.

Trin 5: Visning af resultatet

Sådan viser du scoren til spilleren:

  1. Opret et Text UI-element i lærredet, og giv det navnet ScoreText.
  2. Opret et nyt script kaldet ScoreUI og vedhæft det til lærredet.
  3. Brug følgende kode til at opdatere resultatvisningen:
using UnityEngine;
using UnityEngine.UI;

public class ScoreUI : MonoBehaviour
{
    public Text scoreText;

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

Træk ScoreText UI-elementet ind i ScoreText-feltet i Inspector.

Trin 6: Test af Game Manager

Sådan tester du din Game Manager:

  1. Kør scenen og interager med objekter, der bruger Target-scriptet.
  2. Observer scoreopdateringen i brugergrænsefladen, mens du interagerer med mål.
  3. Kald EndGame-metoden (f.eks. ved at bruge en trigger eller knap) for at teste at afslutte spillet.

Valgfrie forbedringer

Du kan udvide Game Managers funktionalitet med disse funktioner:

  • Niveaustyring: Indlæs nye niveauer, eller nulstil scenen, når spillet er slut.
  • Game Timer: Tilføj en nedtællingstimer for at udfordre spillerne.
  • Lagring af fremskridt: Gem og hent spillerens fremskridt ved hjælp af PlayerPrefs eller et lagringssystem.
  • Pausemenu: Implementer en pausemenu for at stoppe spillet og vise muligheder.

Konklusion

Vi har oprettet en simpel Game Manager til at administrere spiltilstand og sporing af score i Unity. Game Manager centraliserer kernelogikken, hvilket gør dit projekt mere organiseret og skalerbart. Eksperimenter med yderligere funktioner for at skræddersy Game Manager til dit spils behov.