Opprette en enkel spillbehandler i Unity

En Game Manager i Unity er et sentralt skript eller system som overvåker og kontrollerer kjernemekanikken og logikken i et spill. Den administrerer vanligvis spilltilstander (f.eks. start, pause, slutt), spillerfremgang, poeng, nivåer og globale innstillinger. Game Manager er avgjørende for å sikre en ren struktur i prosjektet ditt og unngå overflødig kode. I denne opplæringen lager vi en grunnleggende Game Manager for å håndtere spillstatus og poengsporing.

Trinn 1: Sette opp scenen

For å begynne, forberede en enkel Unity scene:

  1. Opprett et nytt Unity 3D-prosjekt.
  2. Legg til et grunnleggende nivåoppsett, for eksempel et Plane for bakken og noen få objekter for spillelementer.
  3. Lag et UI-lerret for å vise informasjon som partituret.

Trinn 2: Opprette Game Manager-skriptet

Spillbehandleren vil være en singleton for å sikre at den er lett tilgjengelig og bare én forekomst eksisterer gjennom hele spillet. La oss skrive manuset:

  1. Høyreklikk i prosjektpanelet og velg Create > C# Script. Gi det navnet GameManager.
  2. Åpne skriptet i koderedigeringsprogrammet og erstatt innholdet 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
    }
}

Trinn 3: Legge til Game Manager til scenen

La oss nå legge til Game Manager til scenen:

  1. Lag et tomt GameObject i hierarkiet og gi det navnet GameManager.
  2. Dra og slipp GameManager-skriptet på GameObject.
  3. Sørg for at det ikke er noen dupliserte GameManager GameObjects i scenen.

Trinn 4: Oppdatere Gameplay Logic

La oss bruke Game Manager til å håndtere spillerinteraksjoner. For eksempel vil vi endre spillobjekter for å samhandle med Game Manager:

  1. Lag et nytt skript kalt Target for objekter spilleren kan samhandle med.
  2. Bruk følgende kode for 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);
        }
    }
}

Dette skriptet forutsetter at spilleren samhandler med objekter ved å klikke på dem. Du kan tilpasse det til spillets mekanikk, for eksempel kollisjoner eller triggere.

Trinn 5: Vise poengsummen

Slik viser du poengsummen til spilleren:

  1. Lag et Text UI-element i Canvas og gi det navnet ScoreText.
  2. Lag et nytt skript kalt ScoreUI og fest det til Canvas.
  3. Bruk følgende kode for å oppdatere poengvisningen:
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 inn i ScoreText-feltet i Inspector.

Trinn 6: Testing av Game Manager

Slik tester du Game Manager:

  1. Kjør scenen og samhandle med objekter som bruker Target-skriptet.
  2. Se poengoppdateringen i brukergrensesnittet mens du samhandler med mål.
  3. Kalle EndGame-metoden (f.eks. ved å bruke en trigger eller knapp) for å teste å avslutte spillet.

Valgfrie forbedringer

Du kan utvide spillbehandlerens funksjonalitet med disse funksjonene:

  • Nivåstyring: Last inn nye nivåer eller tilbakestill scenen når spillet er over.
  • Spilltimer: Legg til en nedtellingstidtaker for å utfordre spillere.
  • Lagring av fremgang: Lagre og hent frem spillerens fremgang ved å bruke PlayerPrefs eller et lagringssystem.
  • Pausemeny: Implementer en pausemeny for å stoppe spillet og vise alternativer.

Konklusjon

Vi har laget en enkel Game Manager for å administrere spillstatus og poengsporing i Unity. Game Manager sentraliserer kjernelogikken, noe som gjør prosjektet ditt mer organisert og skalerbart. Eksperimenter med tilleggsfunksjoner for å skreddersy Game Manager til spillets behov.