Kursinhalt
Kampfspiel in Unity
Kampfspiel in Unity
Hauptmenü Erstellen
Hauptmenü
Skript für das Hauptmenü
Die MainUI
-Klasse ist ein einfaches Skript, das Funktionalität zum Starten des Spiels und Beenden der Anwendung bietet. Dieses Skript soll mit UI-Buttons in Unity verwendet werden.
Klassendefinition und Methoden
Die Methode StatTheGame
ist dafür konzipiert, das Spiel zu starten, indem eine neue Szene geladen wird. Genauer gesagt weist SceneManager.LoadScene(1)
Unity an, die Szene mit dem Build-Index 1
zu laden, was ihrer Position in den Build-Einstellungen entspricht.
Die Quit
-Methode ermöglicht es, die Anwendung zu schließen, indem Application.Quit()
aufgerufen wird, obwohl diese Funktionalität nur in einer gebauten Anwendung und nicht im Unity-Editor wirksam ist.
Verwendung in Unity
Anfügen des Skripts
Erstellen Sie ein GameObject (z.B. ein leeres GameObject oder ein UI-Element).
Fügen Sie das MainUI
-Skript dem GameObject hinzu, indem Sie das Skript darauf ziehen oder die Schaltfläche Add Component
im Inspektor verwenden.
Einrichten von UI-Buttons
Erstellen Sie einen UI-Button (z.B. GameObject > UI > Button
).
Wählen Sie den Button aus und gehen Sie zum Inspektor.
Im Abschnitt On Click ()
klicken Sie auf die +
-Schaltfläche, um ein neues Ereignis hinzuzufügen.
Ziehen Sie das GameObject mit dem angehängten MainUI
-Skript in das Objektfeld.
Wählen Sie aus dem Dropdown-Menü MainUI > functionName
.
Spielmanager
Skript für Spielmanager
Die GameManager
-Klasse ist verantwortlich für die Verwaltung des Spielzustands. Sie verwendet ein Singleton-Muster, um sicherzustellen, dass es nur eine Instanz von GameManager
im Spiel gibt, verwaltet den Spielzustand und sendet Zustandsänderungen über Ereignisse aus.
Klassendefinition und Mitgliedsvariablen
Methoden
Awake-Methode
Zweck: Stellt sicher, dass es nur eine Instanz von GameManager
gibt und verhindert, dass sie beim Laden neuer Szenen zerstört wird.
Singleton-Muster: Überprüft, ob bereits eine Instanz existiert. Falls ja, zerstört es das Duplikat. Andernfalls weist es die Instanz zu und markiert das Objekt, um beim Laden einer neuen Szene nicht zerstört zu werden.
Start-Methode
Zweck: Initialisiert den Spielstatus auf Playing
, wenn das Spiel startet, und löst das onGameStateChanges
-Ereignis aus.
FinishGame-Methode
Zweck: Setzt den Spielstatus auf Finished
und löst das onGameStateChanges
-Ereignis aus.
GameStates-Enum
Zweck: Definiert die möglichen Zustände des Spiels.
Gegner reagiert auf Spielzustandsänderungen
Diese Methode behandelt die Änderungen des Spielzustands. Wenn der Spielzustand auf Finished
wechselt, wird der Zustand des Gegners auf idle
geändert.
Abschluss-Panel
Skript für Abschluss-Panel
Die FinishPanel
-Klasse verwaltet die Anzeige und Funktionalität des Abschluss-Panels, das erscheint, wenn das Spiel endet. Dieses Panel gibt dem Spieler Feedback darüber, ob er gewonnen oder verloren hat, und bietet Optionen, um zum Hauptmenü zurückzukehren oder das Spiel zu beenden.
Erklärung
Methoden
Start-Methode
Zweck: Abonniert das GameManager.onGameStateChanges
-Ereignis, um Änderungen im Spielstatus zu überwachen.
GameManager_onGameStateChanges-Methode
Zweck: Behandelt die Änderungen des Spielstatus. Wenn der Spielstatus Finished
ist, wird das Abschluss-Panel aktiviert und OnGameFinished
aufgerufen.
OnGameFinished Methode
Zweck: Aktualisiert den Text des Abschlussfensters basierend darauf, ob der Spieler tot oder lebendig ist.
Logik: Wenn der Spieler tot ist, setzt die Methode den Text auf "You lost" in Rot. Wenn der Spieler lebt, setzt sie den Text auf "You Won" in Grün.
BackToMainMenu Methode
Zweck: Lädt die Hauptmenü-Szene (Build-Index 0), wenn sie aufgerufen wird. Diese Methode soll mit einem Button in der Benutzeroberfläche verknüpft werden.
Quit Methode
Zweck: Beendet die Anwendung, wenn sie aufgerufen wird. Diese Methode soll mit einem Button in der Benutzeroberfläche verknüpft werden.
Zusammenfassung
Die FinishPanel
-Klasse zeigt die Endergebnisse des Spiels an und bietet Optionen, um zum Hauptmenü zurückzukehren oder das Spiel zu beenden. Sie abonniert GameManager.onGameStateChanges
, um sich entsprechend zu aktualisieren, wenn das Spiel endet, und verbessert so die Benutzererfahrung mit klaren Rückmeldungen und intuitiven Optionen.
1. Was passiert, wenn die Methode FinishGame
in der GameManager
-Klasse aufgerufen wird?
2. Was passiert, wenn der GameManager
den Spielstatus auf GameStates.Finished
ändert?
Danke für Ihr Feedback!