Een eenvoudige gamemanager maken in Unity
Een Game Manager in Unity is een centraal script of systeem dat toezicht houdt op en de kernmechanica en logica van een game bestuurt. Het beheert doorgaans gamestatussen (bijv. start, pauze, einde), spelervoortgang, scores, levels en globale instellingen. De Game Manager is cruciaal om een schone structuur in uw project te garanderen en redundante code te vermijden. In deze tutorial maken we een basis Game Manager om de gamestatus en scoretracking te beheren.
Stap 1: De scène opzetten
Om te beginnen bereid je een eenvoudige Unity-scène voor:
- Maak een nieuw Unity 3D-project.
- Voeg een basislevelindeling toe, zoals een Vliegtuig voor de grond en een paar objecten voor gameplay-elementen.
- Maak een UI-canvas om informatie zoals de score weer te geven.
Stap 2: Het Game Manager-script maken
De Game Manager zal een singleton zijn om ervoor te zorgen dat het gemakkelijk toegankelijk is en dat er maar één exemplaar bestaat gedurende het spel. Laten we het script schrijven:
- Klik met de rechtermuisknop in het Project-paneel en selecteer Create > C# Script. Noem het GameManager.
- Open het script in uw code-editor en vervang de inhoud door het volgende:
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
}
}
Stap 3: De Game Manager toevoegen aan de scène
Laten we nu de Game Manager aan de scène toevoegen:
- Maak een leeg GameObject in de Hiërarchie en noem het GameManager.
- Sleep het script GameManager naar het GameObject.
- Zorg ervoor dat er geen dubbele GameManager GameObjects in de scène staan.
Stap 4: Gameplaylogica bijwerken
Laten we de Game Manager gebruiken om interacties met spelers te verwerken. We zullen bijvoorbeeld gameplay-objecten aanpassen om te interacteren met de Game Manager:
- Maak een nieuw script met de naam Target voor objecten waarmee de speler kan interacteren.
- Gebruik de volgende code voor het Target-script:
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);
}
}
}
Dit script gaat ervan uit dat de speler met objecten interageert door erop te klikken. U kunt het aanpassen aan de mechanica van uw spel, zoals botsingen of triggers.
Stap 5: De score weergeven
Om de score aan de speler te tonen:
- Maak een Text UI-element in het Canvas en noem het ScoreText.
- Maak een nieuw script met de naam ScoreUI en koppel het aan het Canvas.
- Gebruik de volgende code om de scoreweergave bij te werken:
using UnityEngine;
using UnityEngine.UI;
public class ScoreUI : MonoBehaviour
{
public Text scoreText;
void Update()
{
if (GameManager.Instance != null)
{
scoreText.text = "Score: " + GameManager.Instance.score;
}
}
}
Sleep het ScoreText UI-element naar het veld ScoreText in de Inspector.
Stap 6: De Game Manager testen
Om uw Game Manager te testen:
- Voer de scène uit en communiceer met objecten die het Target-script gebruiken.
- Bekijk hoe de score in de gebruikersinterface wordt bijgewerkt terwijl u met doelen communiceert.
- Roep de EndGame-methode aan (bijvoorbeeld met een trigger of knop) om te testen of het spel beëindigd kan worden.
Optionele verbeteringen
U kunt de functionaliteit van de Game Manager uitbreiden met de volgende functies:
- Levelbeheer: Laad nieuwe levels of reset de scène na afloop van het spel.
- Speltimer: Voeg een afteltimer toe om spelers uit te dagen.
- Voortgang opslaan: Sla de voortgang van de speler op en haal deze op met behulp van PlayerPrefs of een opslagsysteem.
- Pauzemenu: Implementeer een pauzemenu om het spel te stoppen en opties te tonen.
Conclusie
We hebben een eenvoudige Game Manager gemaakt om de spelstatus en scoretracking in Unity te beheren. De Game Manager centraliseert de kernlogica, waardoor uw project beter georganiseerd en schaalbaar wordt. Experimenteer met extra functies om de Game Manager aan te passen aan de behoeften van uw spel.