Überleben
Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 47 von 50.
Aufgabe
MittelLetzter Schritt: Der Durchlauf endet, und der beste Durchlauf bleibt erhalten. Behalte alles aus den früheren Lektionen bei. Die Canvas enthält ein ausgeblendetes GameOverPanel mit ResultText, BestText und einem RestartButton mit der Beschriftung Fight again, und das GameManager-Objekt hat dein GameManager-Skript, wobei hero, spawner, gameOverPanel, resultText, bestText und restartButton im Inspector zugewiesen sind.
Heroerhältpublic event Action Died, das ausgelöst wird, wenn seine Gesundheit 0 erreicht, nachdem es sich selbst deaktiviert hat.- Füge in
GameManager.cseine KlasseBestRunmit dem Attribut[System.Serializable]sowiepublic int waveundpublic int killshinzu. GameManagerlauscht auf dasDied-Ereignis des Helden und aufEnemy.Died, wodurch die Kills dieses Durchlaufs gezählt werden: Abonniere die Ereignisse inOnEnableund entferne die Abonnements inOnDisable. InStartlädt es den besten Durchlauf mitJsonUtilityausbest.jsoninApplication.persistentDataPath, falls diese Datei existiert, blendet das Panel aus und sorgt dafür, dassrestartButtondas Spiel neu startet.- Wenn der Held stirbt, halte das Spiel an (
Time.timeScale0). Der Durchlauf besteht aus derWavedes Spawners und den Kills. Ein neuer Bestwert ist erreicht, wenn eine höhere Welle oder dieselbe Welle mit mehr Kills erreicht wurde: Dann wird der Durchlauf zum Bestwert und mitJsonUtility.ToJsoninbest.jsongespeichert. Zeige den Durchlauf inresultTextalsWave 2, 7 killsund den Bestwert inbestTextalsBest: wave 3, 12 killsan und blende dann das Panel ein. - Beim Neustart wird der Zeitmaßstab wieder auf 1 gesetzt und die Szene erneut geladen.
Drücke Play und kämpfe, bis du fällst. Versuche dann, deinen Bestwert zu übertreffen. Klicke anschließend auf Check.
Probier es selbst
using UnityEngine;
public class GameManager : MonoBehaviour
{
// In einer späteren Lektion wird dies ergänzt: das Ende des Durchlaufs und der beste Durchlauf.
}
Alle Lektionen in Spielarchitektur in Unity
1Komponenten statt Hierarchien
Kleine KomponentenEin Basisskript für GegnerAbstrakte KomponentenKomponenten im ZusammenspielRückblick: Modularer Geschützturm4Serialisierte Daten
Serialisierbare KlassenListen im InspectorEnums im InspectorRückblick: Loot-Tabelle7Zustandsautomaten
Zustände als KlassenEin ZustandsautomatÜbergängeGegner-KIWiederholung: Türzustände10Projekt: Arena-Überlebenskampf
Der HeldGegnertypen2Interfaces in Unity
IDamageableInterfaces und TryGetComponentGetComponentsRückblick: Interaktionstaste5ScriptableObjects
Daten-AssetsWaffenwerteGemeinsame EinstellungenWellen als DatenRückblick: Item-Datenbank8Wiederverwendbarer Code
ErweiterungsmethodenEin generisches SingletonGenerische HilfsmethodenRückblick: FindNearest