Menu
CoddyTech

防御塔等级

Coddy Unity 塔防游戏 课程的第 16 课,共 25 课。

炮塔会升级:每升一级都会增加伤害和射程,每次升级的花费都比上一次更高。等级遵循一条规则,因此资源文件保存的是规则,而不是数字列表;ScriptableObject 上的方法会计算出结果,这样每个脚本请求时都会得到相同的答案。农场游戏中的作物:

public int YieldAt(int level)
{
    return baseYield + yieldPerLevel * (level - 1);
}

等级 1 对应基础值。炮塔只保存自己的 level,并使用该等级对应的数值开火。

challenge icon

挑战

中等

为塔添加等级。

  1. 在 TowerData 中,添加 public int 字段 maxLevel、upgradeCost 和 damagePerLevel,以及 public float 字段 rangePerLevel。
  2. 添加 DamageAt(int level):damage + damagePerLevel * (level - 1);添加 RangeAt,方式相同;添加 UpgradeCost(int level):upgradeCost * level。
  3. 在 Tower 中,添加 private int level = 1;、public int Level => level; 和 public void Upgrade() { level++; };在 RangeAt(level) 范围内使用 DamageAt(level) 攻击。

按“开始”:塔会像之前一样战斗。然后按“检查”。

亲手试试

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;
}

Unity 塔防游戏中的所有课

自己练习: Unity 在线编辑器