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.