Tower Defense Ringan
Termasuk bagian Arsitektur Game di Unity dalam perjalanan Unity di Coddy. Pelajaran 48 dari 50.
Creep berjalan di sepanjang jalan menuju markasmu, dan sebuah tower menjaganya. Tower menembakkan bolt ke creep terdekat selama creep itu berada dalam jangkauan, dan setiap creep yang dikalahkannya memberikan gold. Tekan Space untuk menggunakan gold membeli level tower berikutnya: setiap level memiliki jangkauan lebih jauh, menembak lebih cepat, atau menghasilkan kerusakan lebih besar. Creep yang mencapai markas akan berhasil masuk. Level-level tersebut merupakan data game yang dapat disesuaikan desainer melalui sebuah asset tanpa mengubah kode, dan tower menembakkan banyak bolt, jadi tower menggunakan kembali bolt dari sebuah pool alih-alih membuat dan menghancurkan satu bolt untuk setiap tembakan.
Tulis dua script: TowerData, tipe asset, dan Tower. Creep, Bolt, dan CreepSpawner sudah siap.
Tantangan
SulitInspector menyediakan Tower data (asset Arrow), boltPrefab, dan infoText. Baca tombol Space melalui Keyboard.current dari Input System.
- Di
TowerData.cs: sebuah classTowerLevelyang dapat ditampilkan Inspector, denganpublic float range,public float fireEvery,public int damage, danpublic int cost(harga untuk mencapai level tersebut), sertaTowerData, sebuah ScriptableObject dengan entri menu Create danpublic List<TowerLevel> levels. Asset Arrow berisi tiga level: range 4, setiap 1 s, damage 1, cost 0; range 5, setiap 0.6 s, damage 1, cost 6; range 6, setiap 0.4 s, damage 2, cost 12. - Tower dimulai pada level pertama dengan 0 gold, dan
infoTextmenampilkan keduanya sebagaiLevel 1, 0 goldsetiap kali nilainya berubah. - Ketika waktu
fireEverypada level tersebut telah berlalu sejak tembakan terakhir dan ada creep dalam jangkauan (collider creep berada dalamrangedari tower, seperti yang ditemukan olehPhysics.OverlapSphere), tower menembak creep yang paling dekat dengannya. Tower mengambil bolt dariObjectPool<Bolt>, menempatkannya di tower, lalu memanggilbolt.Launch(creep, damage, pool.Release): bolt memanggil argumen terakhir itu saat selesai, yang mengembalikannya ke pool. Bolt dinonaktifkan saat menunggu di pool dan diaktifkan saat diambil. - Setiap creep yang mati memberikan
bounty-nya dalam gold: dengarkan static eventCreep.Killed. - Space membeli level berikutnya jika level itu tersedia dan gold mencukupi
cost-nya: biaya dikurangi dari gold, lalu tower naik level dan mencatatnya, sepertiTower level 2. Jika tidak, Space tidak melakukan apa pun.
Tekan Jalankan, tahan di jalan dan lakukan upgrade, lalu tekan Periksa.
Coba sendiri
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.Pool;
using TMPro;
public class Tower : MonoBehaviour
{
[SerializeField] private TowerData data;
[SerializeField] private Bolt boltPrefab;
[SerializeField] private TMP_Text infoText;
private int level;
private int gold;
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Arsitektur Game di Unity
1Komponen, Bukan Hierarki
Komponen KecilSkrip Dasar MusuhKomponen AbstrakKomponen yang Bekerja SamaRingkasan: Turret Modular5ScriptableObjects
Aset DataStatistik SenjataPengaturan BersamaGelombang sebagai DataUlasan: database Item8Kode yang Dapat Digunakan Kembali
Extension methodSingleton GenerikHelper GenerikUlasan: FindNearest