Poziomy wież
Lekcja 16 z 25 w kursie Gra w Unity: Obrona wieży w Coddy.
Wieże będą ulepszane: każdy poziom zwiększa obrażenia i zasięg, a każde ulepszenie kosztuje więcej niż poprzednie. Poziomy podlegają regule, więc zasób przechowuje regułę, a nie listę liczb, a metody w obiekcie ScriptableObject obliczają wynik, dzięki czemu każdy skrypt, który o niego zapyta, otrzymuje tę samą odpowiedź. Plony w grze o farmie:
public int YieldAt(int level)
{
return baseYield + yieldPerLevel * (level - 1);
}Poziom 1 to wartość bazowa. Wieża przechowuje tylko własny level i strzela, używając liczb przypisanych do tego poziomu.
Wyzwanie
ŚredniNadaj wieżom poziomy.
- W
TowerDatadodaj publiczne zmienne typu int:maxLevel,upgradeCostidamagePerLevel, a także publiczną zmienną typu float:rangePerLevel. - Dodaj
DamageAt(int level):damage + damagePerLevel * (level - 1); analogicznieRangeAt; orazUpgradeCost(int level):upgradeCost * level. - W
Towerdodajprivate int level = 1;,public int Level => level;ipublic void Upgrade() { level++; }; strzelaj, zadając obrażenia określone przezDamageAt(level)w zasięgu określonym przezRangeAt(level).
Naciśnij „Graj”: wieże walczą jak wcześniej. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
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;
}
Wszystkie lekcje w sekcji Gra w Unity: Obrona wieży
Poćwicz samodzielnie: Edytor online Unity