Menu
CoddyTech

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.

challenge icon

Tantangan

Sedang

Beri menara level.

  1. Di TowerData, tambahkan int publik maxLevel, upgradeCost dan damagePerLevel, serta float publik rangePerLevel.
  2. Tambahkan DamageAt(int level): damage + damagePerLevel * (level - 1); RangeAt dengan cara yang sama; UpgradeCost(int level): upgradeCost * level.
  3. Di Tower, tambahkan private int level = 1;, public int Level => level; dan public void Upgrade() { level++; }; tembak dengan DamageAt(level) dalam jangkauan RangeAt(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