我有什么
我有两个房间:rm_home
和rm_options
。我有一个声音:snd_Bgm
。而且,我有三个对象:obj_bgm
,obj_BtnOnClicked
和obj_BtnOffClicked
。
我想要的很简单
玩家可以打开/关闭snd_Bgm
。
我做了什么
在obj_bgm
中,我有以下事件:
创建活动:设置var
global.sound to 1
房间开始:停止声音
snd_Bgm
;如果global.sound == 1
然后播放声音snd_Bgm
在obj_BtnOnClicked
中,我有以下事件:
左压事件:播放声音
snd_Bgm
; set varglobal.sound to 1
在obj_BtnOffClicked
中,我有以下事件:
左击事件:停止声音
snd_Bgm
; set varglobal.sound to 0
我将obj_BtnOnClicked
和obj_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_BtnOnClicked
或obj_BtnOffClicked
中添加创建活动,则会显示获取错误。
我该怎么办?请解释一下你的答案。感谢。
答案 0 :(得分:1)
您的房间和变量是否持久?
如果rm_home不是持久性的,它会在每次离开时重新启动。因此,放置在该房间中的每个对象都将被重置,包括obj_bgm,它将您的声音变量设置为1.我认为这是当您回到rm_home时声音重新启动的原因。
如果您仍想重置房间但不想重置此特定对象,则可以使其保持持久性。您可以通过勾选对象中的框或通过代码来执行此操作。
如果将create事件放在按钮对象中,则在转到选项室之前不会读取它。因此,当obj_bgm尝试将其设置为1时,它还不存在。我相信它会导致错误。
我在假设上发表这些评论,但我需要查看您的代码或错误消息以帮助您进一步。