第九章 技能系统
与物品系统类似,技能系统也是一个较为复杂的系统,其中UI设计部分涉及到一些新知识,进行重点学习。
9.1 物品信息管理系统
技能管理系统的大致操作与背包系统类似。
9.1.1 技能信息的设计
技能信息的保存格式如下

我们在Atlas中新创建一个记事本存储技能信息,与物品信息类似,命名为SkillInfoInList,内容如下(部分信息进行了修改)
5001,魔法弹,skill-09,伤害 350%,SingleTarget,Attack,350,0,20,10,Magician,1,Enemy,5
5002,治疗,skill-13,治愈30HP,Passive,HP,30,0,10,20,Magician,2,Self,0
5003,冥想,skill-10,魔法恢复20,Passive,MP,20,0,0,30,Magician,5,Self,0
5004,法力涌动,skill-05,攻击力为200%持续15秒,Buff,Attack,200,15,30,30,Magician,7,Self,0
5005,战斗热诚,skill-12,攻击力速度为200%持续30,Buff,AttackSpeed,200,30,30,30,Magician,8,Self,0
5006,究极风暴,skill-11,攻击力400% 所有敌人,MultiTarget,Attack,400,0,50,40,Magician,9,Position,10
为了便于管理物品信息和技能信息,我们新建一个TextInfo来存储这两个txt文档

9.1.2 实现技能信息的读取
与ObjectsInfo类似,我们在GameSetting中添加一个SkillsInfo以访问读取技能信息,在脚本中设定各种属性
public enum ApplyRole{ //适用角色
Swordman,
Magician
}
public enum ApplyType{ //适用类型
Passive,
SingleTarget,
MultiTarget
}
public enum ApplyProperty{ //适用属性
Attack,
Aefense,
AttackSpeed,
HP,
MP
}
public enum ReleaseType{ //释放类型,对自身,敌人(需要鼠标指定)和某个位置(鼠标指定)
Self,
Enemy,
Position
}
public class SkillInfo{ //技能信息表中对应的各条属性
public int id;
public string name;
public string icon_name;
public string des;
public ApplyType applyType;
public ApplyProperty applyProperty;
public int applyValue;
public int applyTime;
public int mpCost;
public int coldTime;
public ApplyRole applyRole;
public int level;
public ReleaseType releaseType;
public float rele