Game Maker - 转 On/Off 声音
Game Maker - Turn On/Off Sound
我有什么
我有两个房间:rm_home
和 rm_options
。我有一个声音:snd_Bgm
。而且,我有三个对象:obj_bgm
、obj_BtnOnClicked
和 obj_BtnOffClicked
。
我想要的很简单
玩家可以转 on/off snd_Bgm
.
我做了什么
在obj_bgm
,我有这些事件:
Create Event: set var global.sound to 1
Room Start: stop sound snd_Bgm
; if global.sound == 1
then play sound snd_Bgm
在obj_BtnOnClicked
,我有这些事件:
Left-Pressed Event: play sound snd_Bgm
; set var global.sound to 1
在obj_BtnOffClicked
,我有这些事件:
Left-Pressed Event: stop sound snd_Bgm
; set var global.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
开始时,它从Create Event中获取var global.sound
的值。但是,如果我将 Create Event 放入 obj_BtnOnClicked
或 obj_BtnOffClicked
,它会显示 Get Error.
我该怎么办?请解释你的答案。谢谢。
你的房间和你的变量是持久的吗?
如果rm_home不是持久化的,每次离开它都会重新启动。因此,放置在该房间中的每个对象都将被重置,包括 obj_bgm,这会将您的声音变量设置为 1。我认为这就是当您回到 rm_home.[=10= 时声音重新启动的原因]
如果您仍然想重置房间而不是这个特定对象,您可以将其设置为持久化。您可以通过勾选对象中的框或通过代码来完成。
如果您将创建事件放在按钮对象中,则在您进入选项室之前不会读取该事件。所以当 obj_bgm 试图将它设置为 1 时,它还不存在。我相信它会导致错误。
我根据假设发表这些评论,但我需要查看您的代码或错误消息以进一步帮助您。
我有什么
我有两个房间:rm_home
和 rm_options
。我有一个声音:snd_Bgm
。而且,我有三个对象:obj_bgm
、obj_BtnOnClicked
和 obj_BtnOffClicked
。
我想要的很简单
玩家可以转 on/off snd_Bgm
.
我做了什么
在obj_bgm
,我有这些事件:
Create Event: set var
global.sound to 1
Room Start: stop sound
snd_Bgm
; ifglobal.sound == 1
then play soundsnd_Bgm
在obj_BtnOnClicked
,我有这些事件:
Left-Pressed Event: play sound
snd_Bgm
; set varglobal.sound to 1
在obj_BtnOffClicked
,我有这些事件:
Left-Pressed Event: stop sound
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
开始时,它从Create Event中获取var global.sound
的值。但是,如果我将 Create Event 放入 obj_BtnOnClicked
或 obj_BtnOffClicked
,它会显示 Get Error.
我该怎么办?请解释你的答案。谢谢。
你的房间和你的变量是持久的吗?
如果rm_home不是持久化的,每次离开它都会重新启动。因此,放置在该房间中的每个对象都将被重置,包括 obj_bgm,这会将您的声音变量设置为 1。我认为这就是当您回到 rm_home.[=10= 时声音重新启动的原因]
如果您仍然想重置房间而不是这个特定对象,您可以将其设置为持久化。您可以通过勾选对象中的框或通过代码来完成。
如果您将创建事件放在按钮对象中,则在您进入选项室之前不会读取该事件。所以当 obj_bgm 试图将它设置为 1 时,它还不存在。我相信它会导致错误。
我根据假设发表这些评论,但我需要查看您的代码或错误消息以进一步帮助您。