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:
- Creați un nou proiect Unity 3D.
- Adăugați un aspect de nivel de bază, cum ar fi un Plane pentru sol și câteva obiecte pentru elementele de joc.
- 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:
- Faceți clic dreapta în panoul Proiect și selectați Creare > C# Script. Numele-i GameManager.
- 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ă:
- Creați un GameObject gol în Ierarhie și denumiți-l GameManager.
- Trageți și plasați scriptul GameManager pe GameObject.
- 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:
- Creați un nou script numit Target pentru obiectele cu care jucătorul poate interacționa.
- 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:
- Creați un element de interfață Text în Canvas și numiți-l ScoreText.
- Creați un nou script numit ScoreUI și atașați-l la Canvas.
- 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:
- Rulați scena și interacționați cu obiecte care folosesc scriptul țintă.
- Observați actualizarea scorului în interfața de utilizare în timp ce interacționați cu ținte.
- 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.