Gelombang Musuh
Termasuk bagian Arsitektur Game di Unity dalam perjalanan Unity di Coddy. Pelajaran 44 dari 50.
Tantangan
SedangMusuh kini datang dalam gelombang, dan gelombang tersebut berupa data. Pertahankan semua yang sudah dibuat di pelajaran sebelumnya. Arena tidak lagi memiliki musuh sendiri: prefab Grunt dan Dasher memuat skripmu, empat titik spawn berada di sudut-sudut arena, dan object Spawner di tengah memiliki skrip WaveSpawner.
- Di
WaveSet.cs, tambahkan classWavedengan[System.Serializable], yang memilikipublic Enemy enemy(prefab),public int count, danpublic float spacing.WaveSetadalah ScriptableObject dengan[CreateAssetMenu],public List<Wave> waves, danpublic float restBetweenWaves. AssetArenadi scene memuat tiga gelombang (3 grunt dengan jarak 0.5 s, 2 dasher dengan jarak 1 s, 5 grunt dengan jarak 0.4 s) dan waktu istirahat 2 detik. Enemymemilikipublic static event Action<Enemy> Died, yang dipicu dengan mengirimkan enemy tepat sebelum dihancurkan.WaveSpawnermendapatkanwaveSetdanspawnPointsdari Inspector, serta memilikipublic int Wave { get; private set; }, yaitu nomor gelombang yang sedang berlangsung. DariStart, sebuah coroutine menjalankan gelombang dalam asset secara berurutan. Untuk setiap gelombang: tambahkan 1 keWavedan catat nilainya, sepertiWave 1; spawn enemy sebanyakcountdengan jarakspacingdetik, enemyi(dimulai dari 0) dispawnPoints[i % spawnPoints.Length]; tunggu sampai tidak ada enemy yang masih hidup; lalu istirahat selamarestBetweenWavesdetik. Setelah gelombang terakhir, set dimulai lagi dari gelombang pertama, dan hitunganWaveterus bertambah: 4, 5, dan seterusnya.- Hitung jumlah enemy yang masih hidup menggunakan event
Died: berlangganan diOnEnabledan berhenti berlangganan diOnDisable. Spawner hanya membaca asset: di Editor, perubahan pada asset saat game berjalan akan tetap tersimpan di asset setelah Play.
Tekan Jalankan dan bertahanlah selama beberapa gelombang, lalu tekan Periksa.
Coba sendiri
using UnityEngine;
public class WaveSpawner : MonoBehaviour
{
// Pelajaran berikutnya akan melengkapi bagian ini: mengirim gelombang ke arena.
}
Semua pelajaran di Arsitektur Game di Unity
1Komponen, Bukan Hierarki
Komponen KecilSkrip Dasar MusuhKomponen AbstrakKomponen yang Bekerja SamaRingkasan: Turret Modular4Data Terserialisasi
Class yang Dapat DiserialisasiList di InspectorEnum di InspectorRingkasan: Tabel Loot10Proyek: Penyintas Arena
Sang PahlawanJenis Musuh5ScriptableObjects
Aset DataStatistik SenjataPengaturan BersamaGelombang sebagai DataUlasan: database Item8Kode yang Dapat Digunakan Kembali
Extension methodSingleton GenerikHelper GenerikUlasan: FindNearest