我的游戏中的分数存在问题,我的游戏是使用混乱的字母回答问题,当玩家得到一个正确答案时,游戏应该为游戏分数增加+1并转移到下一个级别(在下一个房间)并将生成另一个问题,并保持您的最后一个分数为1.我的问题是,当移动到下一个房间时,分数只是重置为值0。即使我去下一个房间,我希望它能不断增加+1。先感谢您。
答案 0 :(得分:2)
有很多解决方案
1)将得分控制器对象设置为持续
这是最好的,因为您不需要做任何其他事情,事实上,将一个对象作为持久控制器是一个很好的规则。
2)您可以将分数保存到文件中,并在每次创建此对象(存储变量)时加载
这需要save \ load操作,在某些情况下(例如,你不想拥有任何持久对象)可能会更好,但我非常怀疑。
答案 1 :(得分:0)
您没有提供有关如何存储分数值的详细信息。
这可能是您制作游戏的方式中的许多问题所致,因此我将尝试为所有可能的场景提供所有解决方案:
1)在对象变量中存储分数
这种方式可能有两种不同的子场景:
a)正确回答后转到下一个房间
b)重新启动同一个房间
这会完全重置对象上的变量,因为该对象被销毁,然后再次创建,再次启动它创建房间时所持有的变量。
为此,解决方案很简单:set persistent true,您可以从表单对象属性(打开对象时弹出的界面)或在对象的create事件上使用gml来执行此操作:
对象:CREATE事件
persistent = true;
这将使对象即使在创建的房间重复为no也不再创建它,因此事件CREATE将永远不会再次重复。
2)使用会议室创建活动
将分数存储在会议室的变量中在这种情况下发生的情况与上面相同,它只是房间的局部变量,但仅存在于房间内,并且只会在房间内存在,直到重新启动或离开。
在这种情况下,最好的方法是通过以下方式将此变量转换为全局实例:
global.points = 0;
这是为您的游戏存储分数的最佳方式。
请记住不要将它放在非持久对象的创建事件中,否则它将被重置为ZERO创建对象的所有内容。
在这种情况下,您可以检查变量是否存在,然后如果没有初始化它:
if (variable_global_exists("points") == true) {
global.points = 0;
}
现在,如果你想保存它,你需要使用文件功能,这是另一个问题。