Oprettelse af en simpel Game Manager i Unity
En Game Manager i Unity er et centralt script eller system, der overvåger og styrer kernemekanikken og logikken i et spil. Det administrerer typisk spiltilstande (f.eks. start, pause, slut), spillerens fremskridt, scoringer, niveauer og globale indstillinger. Game Manager er afgørende for at sikre en ren struktur i dit projekt og undgå overflødig kode. I denne tutorial opretter vi en grundlæggende Game Manager til at håndtere spiltilstand og sporing af score.
Trin 1: Opsætning af scenen
For at begynde skal du forberede en simpel Unity scene:
- Opret et nyt Unity 3D projekt.
- Tilføj et grundlæggende niveaulayout, såsom et Plane til jorden og et par objekter til gameplay-elementer.
- Opret et UI-lærred for at vise information som partituret.
Trin 2: Oprettelse af Game Manager-scriptet
Game Manager vil være en singleton for at sikre, at den er let tilgængelig, og at der kun eksisterer én instans i hele spillet. Lad os skrive manuskriptet:
- Højreklik i projektpanelet og vælg Opret > C# Script. Navngiv den GameManager.
- Åbn scriptet i din kodeeditor og erstat dets indhold med følgende:
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
}
}
Trin 3: Tilføjelse af Game Manager til scenen
Lad os nu tilføje Game Manager til scenen:
- Opret et tomt GameObject i hierarkiet, og navngiv det GameManager.
- Træk og slip GameManager scriptet på GameObject.
- Sørg for, at der ikke er nogen duplikerede GameManager GameObjects i scenen.
Trin 4: Opdatering af Gameplay Logic
Lad os bruge Game Manager til at håndtere spillerinteraktioner. For eksempel vil vi ændre gameplay-objekter til at interagere med Game Manager:
- Opret et nyt script kaldet Target for objekter, som spilleren kan interagere med.
- Brug følgende kode til Target-scriptet:
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);
}
}
}
Dette script antager, at spilleren interagerer med objekter ved at klikke på dem. Du kan tilpasse det til dit spils mekanik, såsom kollisioner eller triggere.
Trin 5: Visning af resultatet
Sådan viser du scoren til spilleren:
- Opret et Text UI-element i lærredet, og giv det navnet ScoreText.
- Opret et nyt script kaldet ScoreUI og vedhæft det til lærredet.
- Brug følgende kode til at opdatere resultatvisningen:
using UnityEngine;
using UnityEngine.UI;
public class ScoreUI : MonoBehaviour
{
public Text scoreText;
void Update()
{
if (GameManager.Instance != null)
{
scoreText.text = "Score: " + GameManager.Instance.score;
}
}
}
Træk ScoreText UI-elementet ind i ScoreText-feltet i Inspector.
Trin 6: Test af Game Manager
Sådan tester du din Game Manager:
- Kør scenen og interager med objekter, der bruger Target-scriptet.
- Observer scoreopdateringen i brugergrænsefladen, mens du interagerer med mål.
- Kald EndGame-metoden (f.eks. ved at bruge en trigger eller knap) for at teste at afslutte spillet.
Valgfrie forbedringer
Du kan udvide Game Managers funktionalitet med disse funktioner:
- Niveaustyring: Indlæs nye niveauer, eller nulstil scenen, når spillet er slut.
- Game Timer: Tilføj en nedtællingstimer for at udfordre spillerne.
- Lagring af fremskridt: Gem og hent spillerens fremskridt ved hjælp af PlayerPrefs eller et lagringssystem.
- Pausemenu: Implementer en pausemenu for at stoppe spillet og vise muligheder.
Konklusion
Vi har oprettet en simpel Game Manager til at administrere spiltilstand og sporing af score i Unity. Game Manager centraliserer kernelogikken, hvilket gør dit projekt mere organiseret og skalerbart. Eksperimenter med yderligere funktioner for at skræddersy Game Manager til dit spils behov.