Tworzenie prostego menedżera gier w Unity

Game Manager w Unity to centralny skrypt lub system, który nadzoruje i kontroluje podstawowe mechanizmy i logikę gry. Zazwyczaj zarządza stanami gry (np. start, pauza, koniec), postępem gracza, wynikami, poziomami i ustawieniami globalnymi. Game Manager jest kluczowy dla zapewnienia czystej struktury w projekcie i uniknięcia zbędnego kodu. W tym samouczku utworzymy podstawowego Game Managera do obsługi stanu gry i śledzenia wyników.

Krok 1: Przygotowanie sceny

Na początek przygotuj prostą scenę Unity:

  1. Utwórz nowy projekt Unity 3D.
  2. Dodaj podstawowy układ poziomu, taki jak Płaszczyzna dla podłoża i kilka obiektów dla elementów rozgrywki.
  3. Utwórz interfejs użytkownika Canvas, aby wyświetlać informacje, takie jak wynik.

Krok 2: Tworzenie skryptu Game Managera

Game Manager będzie singletonem, aby zapewnić łatwy dostęp i tylko jedną instancję w całej grze. Napiszmy skrypt:

  1. Kliknij prawym przyciskiem myszy w panelu Projekt i wybierz Utwórz > Skrypt C#. Nadaj mu nazwę GameManager.
  2. Otwórz skrypt w edytorze kodu i zamień jego zawartość na następującą:
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
    }
}

Krok 3: Dodawanie Menedżera Gry do Sceny

Teraz dodajmy Game Managera do sceny:

  1. Utwórz pusty obiekt GameObject w hierarchii i nazwij go GameManager.
  2. Przeciągnij i upuść skrypt GameManager na GameObject.
  3. Upewnij się, że w scenie nie ma duplikatów obiektów GameManager GameObject.

Krok 4: Aktualizacja logiki rozgrywki

Użyjmy Game Managera do obsługi interakcji graczy. Na przykład zmodyfikujemy obiekty rozgrywki, aby wchodziły w interakcję z Game Managerem:

  1. Utwórz nowy skrypt o nazwie Target dla obiektów, z którymi gracz może wchodzić w interakcję.
  2. Użyj następującego kodu dla skryptu docelowego:
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);
        }
    }
}

Ten skrypt zakłada, że ​​gracz wchodzi w interakcję z obiektami, klikając je. Możesz dostosować go do mechaniki gry, takiej jak kolizje lub wyzwalacze.

Krok 5: Wyświetlanie wyniku

Aby wyświetlić wynik graczowi:

  1. Utwórz element interfejsu użytkownika Text w obszarze Canvas i nazwij go ScoreText.
  2. Utwórz nowy skrypt o nazwie ScoreUI i dołącz go do Canvas.
  3. Użyj poniższego kodu, aby zaktualizować wyświetlanie wyniku:
using UnityEngine;
using UnityEngine.UI;

public class ScoreUI : MonoBehaviour
{
    public Text scoreText;

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

Przeciągnij element interfejsu użytkownika ScoreText do pola ScoreText w Inspektorze.

Krok 6: Testowanie Menedżera Gry

Aby przetestować Game Managera:

  1. Uruchom scenę i wchodź w interakcję z obiektami korzystającymi ze skryptu Target.
  2. Obserwuj aktualizację wyniku w interfejsie użytkownika w miarę interakcji z celami.
  3. Wywołaj metodę EndGame (np. używając wyzwalacza lub przycisku), aby przetestować zakończenie gry.

Opcjonalne ulepszenia

Funkcjonalność Game Managera można rozszerzyć o następujące funkcje:

  • Zarządzanie poziomami: Wczytaj nowe poziomy lub zresetuj scenę po zakończeniu gry.
  • Timer gry: Dodaj licznik czasu, aby rzucić wyzwanie graczom.
  • Zapisywanie postępu: Przechowuj i pobieraj postępy gracza, korzystając z PlayerPrefs lub systemu zapisu.
  • Menu pauzy: Wprowadź menu pauzy, aby zatrzymać grę i wyświetlić opcje.

Wniosek

Stworzyliśmy prostego Game Managera do zarządzania stanem gry i śledzeniem wyników w Unity. Game Manager centralizuje logikę rdzenia, dzięki czemu Twój projekt jest bardziej zorganizowany i skalowalny. Eksperymentuj z dodatkowymi funkcjami, aby dostosować Game Managera do potrzeb swojej gry.