Game Maker Studio得分,我的分数在下一个房间时会重置

时间:2017-09-25 05:36:48

标签: game-maker game-maker-language game-maker-studio-1.4 game-maker-studio-2 game-maker-legacy

我的游戏中的分数存在问题,我的游戏是使用混乱的字母回答问题,当玩家得到一个正确答案时,游戏应该为游戏分数增加+1并转移到下一个级别(在下一个房间)并将生成另一个问题,并保持您的最后一个分数为1.我的问题是,当移动到下一个房间时,分数只是重置为值0。即使我去下一个房间,我希望它能不断增加+1。先感谢您。

2 个答案:

答案 0 :(得分:2)

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

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;
}

现在,如果你想保存它,你需要使用文件功能,这是另一个问题。