Menu
CoddyTech

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.

challenge icon

Wyzwanie

Średni

Nadaj wieżom poziomy.

  1. W TowerData dodaj publiczne zmienne typu int: maxLevel, upgradeCost i damagePerLevel, a także publiczną zmienną typu float: rangePerLevel.
  2. Dodaj DamageAt(int level): damage + damagePerLevel * (level - 1); analogicznie RangeAt; oraz UpgradeCost(int level): upgradeCost * level.
  3. W Tower dodaj private int level = 1;, public int Level => level; i public void Upgrade() { level++; }; strzelaj, zadając obrażenia określone przez DamageAt(level) w zasięgu określonym przez RangeAt(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