你好!

我在尝试创建一个小型RPG来学习GameMaker,我刚开始做。 我需要为每个技能制作一个列表,每个列表中有像“伤害倍数”、“元素”、“成本”、“患病几率”等值,每个技能会是一个结构,如下所示:

{
 name: "火球",
 cost: 3,
 elem: [` Elem.Fire` ],  // 这将是各种元素的枚举
 damage: 1.2,    // 伤害公式的倍数
 illsent_perc: 0.2,    // 这个技能 inflict 的火灾病灾患病率是多少
 target: Target.Single,    // 这将是一个枚举,值为单个目标、所有目标和随机目标
 num_of_hits: 1,
}

我想找一种方法来存储所有这些技能,以便稍后在战斗管理器中访问它们。

我的第一想法是制作一个全局数组,并为相应技能名字创建一个枚举,如下所示:

枚举 Skill {
 Fireball,
 Icecycle,
 Thunder,
}

Skills = [<fireball 结构>, <icycle 结构>, <thunder 结构>];

这样我就可以调用 global.Skills[Skill.Fireball]

然后我想的只是使用一个结构,可能是一个结构化的结构:

Skills = {
 FireSkills: {
  Fireball: <fireball 结构>
 },
 IceSkills: {
  Icecycle: <icycle 结构>
 },
 ElectrSkills: {
  Thunder: <thunder 结构>
 },
}

这样我就可以调用global.Skills.FireSkills.Fireball

在浏览网上后,我看到了有人提到“ds_lists”来存储技能,我不太清楚它们是什么。

我还看到了类似的代码如下:

功能技能(<技能参数>){
  返回&lt;技能参数&gt;;
}

功能技能()构造{
  静态&lt;技能名称&gt;=技能(&lt;技能参数&gt; );
  ...
}

然而似乎这种方法会带来一些魔法数字,并且在我的情况下似乎很困难,仅仅存储一些有意义的数字和一个字符串就足够了。

同样,我也需要一种方法来存储敌人的统计数据,我想解决的问题的解决方案应该与技能相同:在敌人的物体中使用一个ID来从数据集合中获取其统计数据,从数据集合中获取技能数据。

您有什么推荐?我是否应该学习“ds_列表”和构造函数?是否够用一个结构或一个数组?在现实中,我认为这应该能够扩展到100~200个独特的技能和敌人,并不打算在这个项目中实现太多技能和敌人,只是想学习对于大数目的技能和敌人什么会好坏。

感谢您的帮助!