Rückblick: Rundenmanager
Teil des Abschnitts Echte Spiele entwickeln der Unity-Journey von Coddy. Lektion 16 von 60.
Dieses Kapitel hat dem Spiel einen Manager gegeben: ein Singleton, auf das andere ohne ein Feld zugreifen können, und Zustände, zwischen denen es wechselt. Der Rundenmanager setzt beides ein.
Aufgabe
EinfachSchließe das Einsammeln der Münzen ab; SetState ist bereits geschrieben.
- Füge
public static RoundManager Instance;hinzu und setze es inAwake(). - Wechsle in
Update()anhand vonstate: Ready wartet auf die Leertaste; Playing zählttimeLeftherunter und wechselt dann zum nächsten Ready oder nach der letzten Runde zu Finished. public bool TakeCoin(): nur während Playing, zähle die Münze und zeigeCoins: 2an; gib true zurück.Coin.cszerstört eine gezählte Münze, die der Player berührt.
Drücke in allen drei Runden auf „Spielen“. Klicke anschließend auf „Prüfen“.
Probier es selbst
using UnityEngine;
using TMPro;
public enum RoundState { Ready, Playing, Finished }
public class RoundManager : MonoBehaviour
{
// das Singleton: eine statische Instance, in Awake() gesetzt
public GameObject readyPanel;
public GameObject playPanel;
public GameObject finishedPanel;
public TMP_Text roundText;
public TMP_Text coinsText;
public TMP_Text finalText;
public int rounds = 3;
public float roundTime = 4f;
private RoundState state;
private int round = 1;
private int coins;
private float timeLeft;
void Start()
{
SetState(RoundState.Ready);
}
void Update()
{
// anhand von state verzweigen: Ready wartet auf Space; Playing zählt die Zeit herunter
}
void SetState(RoundState next)
{
state = next;
readyPanel.SetActive(next == RoundState.Ready);
playPanel.SetActive(next == RoundState.Playing);
finishedPanel.SetActive(next == RoundState.Finished);
if (next == RoundState.Ready) roundText.text = "Round " + round;
if (next == RoundState.Playing) timeLeft = roundTime;
if (next == RoundState.Finished) finalText.text = "Coins: " + coins;
}
// TakeCoin(): Eine Münze zählt nur während Playing
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Echte Spiele entwickeln
1Text auf dem Bildschirm
Canvas und TextPunktestand anzeigenZahlen formatierenEin Countdown-TimerRückblick: Tachometer2Buttons und Bildschirme
Buttons und onClickLambdasVerknüpfungen im InspectorPanels ein- und ausblendenGesundheitsbalkenRückblick: Upgrade-Shop5Speichern mit PlayerPrefs
Eine Zahl speichernMit einem Standardwert ladenHöchstpunktzahlEinstellungen speichernRückblick: Münzen auf der Bank3Der Spielmanager
Ein Skript steuert das SpielDas SingletonSpielzuständeZum Zustand wechselnRückblick: RundenmanagerÜbe selbstständig: Unity-Playground