0

我对游戏中的分数有疑问,我的游戏是关于使用混乱的字母回答问题,当玩家得到一个正确答案时,游戏应该将游戏分数 +1 并进入下一个级别(即在下一个房间)并会产生另一个问题,并保持你的最后一个分数为 1。我的问题是,当你进入下一个房间时,分数会一直重置为 0。即使我去下一个房间,我也希望它不断添加+1。先感谢您。

4

2 回答 2

2

有很多解决方案。
1) 将您的分数控制器对象设置为持久 这是最好的,因为您不需要做任何其他事情,事实上,将一个对象作为持久控制器是一个很好的规则。
执着的

2)您可以将您的分数保存到文件并在每次创建此对象(存储变量)时加载它
这需要保存\加载操作,并且在某些情况下(例如,您不希望有任何持久对象)可以更好,但我高度怀疑。

于 2017-09-26T12:52:32.267 回答
0

您没有提供有关如何存储分值的足够详细信息。

这可能是由于您制作游戏的方式存在许多问题,所以我将尝试为所有可能的场景提供所有解决方案:

1) 将分数存储在对象变量中

这种方式可能有两种不同的子场景:

a) 正确回答后进入下一个房间

b) 重启同一个房间

这完全重置了对象上的变量,因为对象被销毁然后再次创建,再次初始化它在创建房间时保存的变量。

为此,解决方案很简单:将持久设置为 true,您可以从表单对象属性(打开对象时弹出的界面)或在对象的创建事件上使用 gml:

对象:创建事件

persistent = true;

这将使对象即使在创建的房间上重复也不会再次创建它,因此事件 CREATE 将不会再重复。

2)使用房间创建事件将分数存储在房间的变量中

在这种情况下,与上面的情况相同,它只是房间的一个局部变量,但只存在于房间,并且只会在房间期间存在,直到它重新启动或离开。

在这种情况下,最好通过以下方式将此变量转换为全局实例:

global.points = 0;

这是为您的游戏存储分数的最佳方式。

请记住不要将它放在非持久对象的创建事件中,否则它将被重置为零,该对象被创建的所有内容。

在这种情况下,您可以检查变量是否存在,然后如果不初始化它:

if (variable_global_exists("points") == true) {
    global.points = 0;
}

现在,如果要保存它,则需要使用文件函数,这是另一个问题。

于 2017-09-28T15:16:06.213 回答