Zustand
Was sich das Spiel von einem Frame zum nächsten merkt. Ist die Tür offen? Wie viele Münzen sind gesammelt? Events ändern den Zustand, Bedingungen fragen ihn ab.
Kurz
Jeder Frame beginnt mit dem, was der letzte hinterlassen hat. Was dabei erhalten bleibt, ist der Zustand: Position der Spielfigur, Lebenspunkte, ob der Schlüssel schon aufgehoben ist.
Im Code steht Zustand in Variablen:
bool hatSchluessel = false; // ja oder nein
int muenzen = 0; // eine Zahl
Genauer
Zustand und Event gehören zusammen. Ein Event ist ein Moment und ändert den Zustand: Beim Aufheben wird hatSchluessel wahr. Eine Bedingung liest ihn später: Die Tür geht nur auf, wenn hatSchluessel wahr ist.
Viele Dinge im Spiel haben wenige, klar getrennte Zustände. Eine Tür ist verschlossen, zu oder offen. Zwischen ihnen gibt es feste Übergänge: Erst der Schlüssel macht aus „verschlossen“ „zu“. So ein Modell heißt Zustandsautomat (State Machine). Es lohnt sich, ihn erst auf Papier zu zeichnen: Kästchen für Zustände, Pfeile für Übergänge, an jeden Pfeil das Event, das ihn auslöst.
Ein häufiger Fehler: Zustand, der nirgends gespeichert ist. Fragt ein Skript nur „wird gerade E gedrückt?“, weiß es im nächsten Frame nicht mehr, dass die Tür schon offen ist.
In Unity sehen
- Im Kit halten die Knoten Merker (ja oder nein) und Zähler (eine Zahl) Zustand. Jeder Merker hat einen Namen, etwa „Schlüssel vorhanden“.
- Öffentliche Variablen eines Skripts erscheinen im Inspector. Im Play-Modus lässt sich dort zusehen, wie sie sich ändern.
- Der Animator ist ein Zustandsautomat zum Ansehen: Zustände als Kästchen, Übergänge als Pfeile (Tag 4).
Weiterlesen
- Game Programming Patterns: State – Robert Nystrom baut eine Spielfigur aus verknoteten
if-Abfragen zu einem Zustandsautomaten um. Der beste Text zum Thema (englisch). - Unity Manual: State machine basics – Zustandsautomaten im Animator (Unity 6.3, englisch).