场景:
在测试战斗的过程中经常需要调数值来方便测试。比如要测某张卡牌的法术技能,直接测要等这张卡牌满蓝了放法术看效果,这样不是很方便,因为它可能在放法术之前被杀了,又或者放法术的时机不是自己想要的时机,等下次放法术时 CD 又比较长,遇到这类情况都是通过改配置表后重启游戏再进行测试。这样会有两个问题:一是改配置后需要重启游戏才能生效比较耗时;二是改了配置表测完后又必须改回去不然 svn 会有冲突,如果忘了改回又会出莫名奇妙的 BUG。
解决方案:
游戏启动后工程会把配置表读取过来并赋值给对应配置对象中的各属性(对应着配置表中的各字段),之后进入战斗后又会取对应的值进行战斗计算,我在项目中找到了开发写的可以 get 和修改各属性的方法,基于这两点在 unity 里写了一个工具可以即时修改各卡牌的属性并在下一场战斗中生效(部分属性可以立即生效),重启游戏后当前修改失效,也不用改动配置表,这样可以提升测试团队的效率。
效果展示:
用 EditorWindow GUI 实现的最终效果图,左边列表显示的是所有的英雄,右边显示的是对应卡牌的所有属性列表,后面的输入框中可以修改,点击上面 “应用修改” 按钮就可生效。
应用举例:
1.比如我要测试蝙蝠的技能,我希望它能一直放技能,只需要修改 magicRestore(法力恢复)改成 100 点击 “应用修改” 即可。
2.再比如,我把 summonCost(召唤费用) 和 summonCd(召唤 CD) 都改成 0,这样就可以无限放蝙蝠这张卡牌。
3.假设蝙蝠的普通技能 normalSkill 每次攻击有 0.1 的概率让敌人中毒,这个参数会以 string 形式写在 normalSkill 这个字段中(类似:101001;0.1),只需要把 0.1 改成 1 就可以让敌人 100% 中毒方便测试。
工具拓展:
拓展 1:
基于这套思路,把一些通用的方法封装在一个基类中,然后把建筑、装备、Buff、技能等等继承自这个基类也做出上述的工具,这样很多地方的测试都方便了很多。
拓展 2:
遍历所有的卡牌做相同的属性修改,可以实现另外一套比较方便的战斗测试工具,如:
所有卡牌血量很大(这样基本不会死),
所有卡牌攻击=100(方便测试一些按比例增加攻击的道具或 BUFF)
所有卡牌攻击=0(这样可以排除掉普通攻击的效果,方便直接看技能打了多少伤害)
不一一举例,大致如图: