【问题标题】:Game Maker - Turn On/Off SoundGame Maker - 打开/关闭声音
【发布时间】:2016-06-15 05:34:31
【问题描述】:

我有什么

我有两个房间:rm_home 和 rm_options。我有声音:snd_Bgm。而且,我有三个对象:obj_bgm、obj_BtnOnClicked 和 obj_BtnOffClicked。

我想要的很简单

玩家可以开启/关闭snd_Bgm。

我做了什么

在obj_bgm,我有这些事件:

创建事件:set var global.sound to 1

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

在obj_BtnOnClicked,我有这些事件:

左按事件:播放声音snd_Bgm;设置变量global.sound to 1

在obj_BtnOffClicked,我有这些事件:

左按事件:停止声音snd_Bgm;设置变量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。

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

【问题讨论】:

    标签: button audio game-maker


    【解决方案1】:

    你的房间和你的变量是持久的吗?

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

    如果您仍想重置房间但不想重置此特定对象,您可以使其持久化。您可以通过勾选对象中的框或通过代码来完成。

    如果您将创建事件放在按钮对象中,则在您进入选项室之前不会读取它。所以当 obj_bgm 试图将它设置为 1 时,它还不存在。我相信它会导致错误。

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

    【讨论】:

    • 不,它不是持久的。所以,正如你所说,我检查了obj_bgm 中的持久选项,它有效!我以前不知道持久对象。谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-12-21
    • 2012-11-14
    • 2015-08-29
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多