Crearea unui manager de joc simplu în Unity

Un Game Manager în Unity este un script sau un sistem central care supraveghează și controlează mecanica și logica de bază a unui joc. De obicei, gestionează stările jocului (de exemplu, începutul, pauză, sfârșitul), progresul jucătorului, scorurile, nivelurile și setările globale. Managerul de jocuri este esențial pentru a asigura o structură curată în proiectul dvs. și pentru a evita codul redundant. În acest tutorial, vom crea un Manager de joc de bază pentru a gestiona starea jocului și urmărirea scorurilor.

Pasul 1: Configurarea scenei

Pentru a începe, pregătiți o scenă simplă Unity:

  1. Creați un nou proiect Unity 3D.
  2. Adăugați un aspect de nivel de bază, cum ar fi un Plane pentru sol și câteva obiecte pentru elementele de joc.
  3. Creați o pânză UI pentru a afișa informații precum scorul.

Pasul 2: Crearea scriptului Game Manager

Managerul de joc va fi un singleton pentru a se asigura că este ușor accesibil și că există o singură instanță pe tot parcursul jocului. Să scriem scenariul:

  1. Faceți clic dreapta în panoul Proiect și selectați Creare > C# Script. Numele-i GameManager.
  2. Deschideți scriptul în editorul de cod și înlocuiți-i conținutul cu următorul:
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
    }
}

Pasul 3: Adăugarea managerului de joc la scenă

Acum, să adăugăm Managerul de joc la scenă:

  1. Creați un GameObject gol în Ierarhie și denumiți-l GameManager.
  2. Trageți și plasați scriptul GameManager pe GameObject.
  3. Asigurați-vă că nu există GameManager GameObjects duplicat în scenă.

Pasul 4: Actualizarea logicii jocului

Să folosim Managerul de joc pentru a gestiona interacțiunile jucătorilor. De exemplu, vom modifica obiectele de joc pentru a interacționa cu Managerul de joc:

  1. Creați un nou script numit Target pentru obiectele cu care jucătorul poate interacționa.
  2. Utilizați următorul cod pentru scriptul țintă:
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);
        }
    }
}

Acest script presupune că jucătorul interacționează cu obiecte făcând clic pe ele. Îl poți adapta la mecanica jocului tău, cum ar fi coliziunile sau declanșatoarele.

Pasul 5: Afișarea scorului

Pentru a afișa scorul jucătorului:

  1. Creați un element de interfață Text în Canvas și numiți-l ScoreText.
  2. Creați un nou script numit ScoreUI și atașați-l la Canvas.
  3. Utilizați următorul cod pentru a actualiza afișarea scorului:
using UnityEngine;
using UnityEngine.UI;

public class ScoreUI : MonoBehaviour
{
    public Text scoreText;

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

Trageți elementul ScoreText UI în câmpul ScoreText din Inspector.

Pasul 6: Testarea Game Manager

Pentru a testa Managerul de jocuri:

  1. Rulați scena și interacționați cu obiecte care folosesc scriptul țintă.
  2. Observați actualizarea scorului în interfața de utilizare în timp ce interacționați cu ținte.
  3. Apelați metoda EndGame (de exemplu, folosind un declanșator sau un buton) pentru a testa terminarea jocului.

Îmbunătățiri opționale

Puteți extinde funcționalitatea Managerului de joc cu aceste caracteristici:

  • Managementul nivelurilor: Încărcați noi niveluri sau resetați scena la finalul jocului.
  • Timer joc: Adăugați un cronometru pentru a provoca jucători.
  • Salvare progres: Stocați și recuperați progresul jucătorului folosind PlayerPrefs sau un sistem de salvare.
  • Meniu pauză: Implementați un meniu pauză pentru a opri jocul și a afișa opțiunile.

Concluzie

Am creat un Manager de jocuri simplu pentru a gestiona starea jocului și urmărirea scorurilor în Unity. Managerul de joc centralizează logica de bază, făcând proiectul dvs. mai organizat și mai scalabil. Experimentați cu funcții suplimentare pentru a adapta Managerul de joc la nevoile jocului dvs.