Fale wrogów
Część sekcji Architektura gier w Unity ścieżki Unity w Coddy. Lekcja 44 z 50.
Wyzwanie
ŚredniWrogowie pojawiają się teraz w falach, a fale są danymi. Zachowaj wszystko z poprzednich lekcji. Arena nie ma już własnych wrogów: prefabrykaty Grunt i Dasher zawierają twoje skrypty, cztery punkty pojawiania się znajdują się w rogach, a obiekt Spawner pośrodku ma skrypt WaveSpawner.
- W pliku
WaveSet.csdodaj klasęWavez atrybutem[System.Serializable], zawierającąpublic Enemy enemy(prefabrykat),public int countorazpublic float spacing.WaveSetto ScriptableObject z atrybutem[CreateAssetMenu], zawierającypublic List<Wave> wavesipublic float restBetweenWaves. Zasób scenyArenazawiera trzy fale (3 gruntów w odstępach 0.5 s, 2 dasherów w odstępach 1 s, 5 gruntów w odstępach 0.4 s) oraz 2 sekundy przerwy. Enemyotrzymujepublic static event Action<Enemy> Died, wywoływane z przekazaniem wroga tuż przed jego zniszczeniem.WaveSpawnerma przypisane w InspectorzewaveSetispawnPoints, a takżepublic int Wave { get; private set; }— numer aktualnie rozgrywanej fali. Z poziomuStarturuchamiana jest korutyna, która kolejno przechodzi przez fale z zasobu. Dla każdej fali: zwiększWaveo 1 i wyświetl jej numer w logu, np.Wave 1; pojawiaj wrogów z tej fali w liczbie określonej przezcount, w odstępachspacingsekund, a wrogai(licząc od 0) w punkciespawnPoints[i % spawnPoints.Length]; poczekaj, aż wszyscy wrogowie zginą; następnie odczekajrestBetweenWavessekund. Po ostatniej fali zestaw zaczyna się od początku, aWavenadal rośnie: 4, 5 i tak dalej.- Licz żywych wrogów za pomocą zdarzenia
Died: zasubskrybuj je wOnEnablei zrezygnuj z subskrypcji wOnDisable. Spawner tylko odczytuje zasób: w edytorze zmiana wprowadzona do zasobu podczas działania gry pozostaje w zasobie po zakończeniu trybu Play.
Naciśnij Play i przetrwaj kilka fal, a następnie naciśnij Check.
Spróbuj swoich sił
using UnityEngine;
public class WaveSpawner : MonoBehaviour
{
// Wypełnimy to w późniejszej lekcji: wysyła fale na arenę.
}
Wszystkie lekcje w sekcji Architektura gier w Unity
1Komponenty, nie hierarchie
Małe komponentyPodstawowy skrypt przeciwnikaKomponenty abstrakcyjneWspółpracujące komponentyPodsumowanie: modułowa wieżyczka4Dane serializowane
Klasy serializowalneListy w InspectorzeWyliczenia w InspectorzePodsumowanie: tabela łupów10Projekt: Arena przetrwania
BohaterTypy wrogów2Interfejsy w Unity
IDamageableInterfejsy i TryGetComponentGetComponentsPodsumowanie: klawisz interakcji5ScriptableObjects
Zasoby danychStatystyki broniWspółdzielone ustawieniaFale jako danePowtórka: baza danych przedmiotów8Kod wielokrotnego użytku
Metody rozszerzająceGeneryczny singletonGeneryczne metody pomocniczePodsumowanie: FindNearest