Level Menara
Pelajaran 16 dari 25 dalam kursus Game Unity: Tower Defense di Coddy.
Menara akan ditingkatkan: setiap level menambah damage dan jangkauan, dan setiap peningkatan biayanya lebih besar daripada peningkatan sebelumnya. Level-level mengikuti suatu aturan, jadi aset menyimpan aturan itu, bukan daftar angka, dan method pada ScriptableObject menghitungnya, sehingga setiap skrip yang meminta mendapatkan jawaban yang sama. Contoh tanaman dalam game pertanian:
public int YieldAt(int level)
{
return baseYield + yieldPerLevel * (level - 1);
}Level 1 adalah nilai dasar. Menara hanya menyimpan level-nya sendiri, lalu menembakkan proyektil dengan angka untuk level tersebut.
Tantangan
SedangBeri menara level.
- Di
TowerData, tambahkan int publikmaxLevel,upgradeCostdandamagePerLevel, serta float publikrangePerLevel. - Tambahkan
DamageAt(int level):damage + damagePerLevel * (level - 1);RangeAtdengan cara yang sama;UpgradeCost(int level):upgradeCost * level. - Di
Tower, tambahkanprivate int level = 1;,public int Level => level;danpublic void Upgrade() { level++; }; tembak denganDamageAt(level)dalam jangkauanRangeAt(level).
Tekan tombol “Main”: menara bertarung seperti sebelumnya. Lalu tekan tombol “Periksa”.
Coba sendiri
using UnityEngine;
[CreateAssetMenu(fileName = "NewTower", menuName = "Tower Defense/Tower Data")]
public class TowerData : ScriptableObject
{
public string towerName;
public int cost = 50;
public int damage = 2;
public float range = 4f;
public float fireRate = 1f;
}
Semua pelajaran di Game Unity: Tower Defense
Latihan sendiri: Playground Unity