Game Maker - 打开/关闭声音

时间:2016-06-15 05:34:31

标签: button audio game-maker

我有什么

我有两个房间:rm_homerm_options。我有一个声音:snd_Bgm。而且,我有三个对象:obj_bgmobj_BtnOnClickedobj_BtnOffClicked

我想要的很简单

玩家可以打开/关闭snd_Bgm

我做了什么

obj_bgm中,我有以下事件:

  

创建活动:设置var global.sound to 1

     

房间开始:停止声音snd_Bgm;如果global.sound == 1然后播放声音snd_Bgm

obj_BtnOnClicked中,我有以下事件:

  

左压事件:播放声音snd_Bgm; set var global.sound to 1

obj_BtnOffClicked中,我有以下事件:

  

左击事件:停止声音snd_Bgm; set var global.sound to 0

我将obj_BtnOnClickedobj_BtnOffClicked放在rm_options中,可以从rm_home访问。然后,我将obj_bgm放入rm_home

这是问题

游戏开始时,它会显示rm_home并播放snd_bgm。我转到rm_options,然后点击obj_BtnOffClicked关闭声音,声音关闭。但是,当我回到rm_home时,声音再次开启。

我的想法

我不应该将Create Event: set var global.sound to 1放在obj_bgm中,因为当rm_home开始时,它会从创建事件中获取var global.sound的值。但是,如果我在obj_BtnOnClickedobj_BtnOffClicked中添加创建活动,则会显示获取错误

我该怎么办?请解释一下你的答案。感谢。

1 个答案:

答案 0 :(得分:1)

您的房间和变量是否持久?

如果rm_home不是持久性的,它会在每次离开时重新启动。因此,放置在该房间中的每个对象都将被重置,包括obj_bgm,它将您的声音变量设置为1.我认为这是当您回到rm_home时声音重新启动的原因。

如果您仍想重置房间但不想重置此特定对象,则可以使其保持持久性。您可以通过勾选对象中的框或通过代码来执行此操作。

如果将create事件放在按钮对象中,则在转到选项室之前不会读取它。因此,当obj_bgm尝试将其设置为1时,它还不存在。我相信它会导致错误。

我在假设上发表这些评论,但我需要查看您的代码或错误消息以帮助您进一步。