Gegnerwellen
Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 44 von 50.
Aufgabe
MittelDie Gegner kommen jetzt in Wellen, und die Wellen sind Daten. Behalte alles aus den vorherigen Lektionen bei. Die Arena hat keine eigenen Gegner mehr: Die Prefabs Grunt und Dasher enthalten deine Skripte, vier Spawnpunkte befinden sich in den Ecken, und das Spawner-Objekt in der Mitte hat das Skript WaveSpawner.
- Füge in
WaveSet.cseine KlasseWavemit[System.Serializable]hinzu, mitpublic Enemy enemy(dem Prefab),public int countundpublic float spacing.WaveSetist ein ScriptableObject mit[CreateAssetMenu], einempublic List<Wave> wavesund einempublic float restBetweenWaves. Das AssetArenader Szene enthält drei Wellen (3 Grunts im Abstand von 0.5 s, 2 Dasher im Abstand von 1 s, 5 Grunts im Abstand von 0.4 s) und eine Pause von 2 Sekunden. Enemyerhältpublic static event Action<Enemy> Died, das mit dem Gegner ausgelöst wird, unmittelbar bevor er zerstört wird.WaveSpawnererhält über den InspectorwaveSetundspawnPointssowiepublic int Wave { get; private set; }, die Nummer der laufenden Welle. AbStartführt eine Coroutine die Wellen des Assets der Reihe nach aus. Für jede Welle:Waveum 1 erhöhen und protokollieren, zum Beispiel alsWave 1; diecountGegner der Welle im Abstand vonspacingSekunden spawnen, wobei Gegneri(beginnend bei 0) anspawnPoints[i % spawnPoints.Length]erscheint; warten, bis keine Gegner mehr am Leben sind; dannrestBetweenWavesSekunden pausieren. Nach der letzten Welle beginnt die Abfolge wieder mit der ersten, undWavezählt weiter: 4, 5 und so weiter.- Zähle die lebenden Gegner mit dem
Died-Ereignis: Abonniere es inOnEnableund hebe das Abonnement inOnDisableauf. Der Spawner liest das Asset nur aus: Eine im Editor während des laufenden Spiels vorgenommene Änderung an einem Asset bleibt nach dem Beenden von Play im Asset erhalten.
Drücke Play und überlebe ein paar Wellen, dann Check.
Probier es selbst
using UnityEngine;
public class WaveSpawner : MonoBehaviour
{
// In einer späteren Lektion wird dies ergänzt: Die Wellen werden in die Arena geschickt.
}
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