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:
- Utwórz nowy projekt Unity 3D.
- Dodaj podstawowy układ poziomu, taki jak Płaszczyzna dla podłoża i kilka obiektów dla elementów rozgrywki.
- 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:
- Kliknij prawym przyciskiem myszy w panelu Projekt i wybierz Utwórz > Skrypt C#. Nadaj mu nazwę GameManager.
- 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:
- Utwórz pusty obiekt GameObject w hierarchii i nazwij go GameManager.
- Przeciągnij i upuść skrypt GameManager na GameObject.
- 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:
- Utwórz nowy skrypt o nazwie Target dla obiektów, z którymi gracz może wchodzić w interakcję.
- 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:
- Utwórz element interfejsu użytkownika Text w obszarze Canvas i nazwij go ScoreText.
- Utwórz nowy skrypt o nazwie ScoreUI i dołącz go do Canvas.
- 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:
- Uruchom scenę i wchodź w interakcję z obiektami korzystającymi ze skryptu Target.
- Obserwuj aktualizację wyniku w interfejsie użytkownika w miarę interakcji z celami.
- 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.