如何在SpriteKit / Objective C中添加“静音”按钮?

时间:2014-09-04 19:40:12

标签: ios objective-c audio sprite-kit

我正在编写一个小小的SpriteKit游戏,我想添加一个静音按钮,以便您在玩游戏时可以听到自己的音乐。目前我只是停止静音按钮所在场景的音频播放(主菜单)。但是,即使音频播放停止,我的游戏仍会自动停止用户音乐。我该如何防止这种情况?

另外,我想将按下静音按钮(位于主菜单中)的信息传递给我的游戏场景,这样我也可以将音乐静音,我该怎么做? 基本上我如何将变量值从一个场景传递到另一个场景?

1 个答案:

答案 0 :(得分:1)

我刚才做的是检查iPod播放器是否正常工作并优先考虑游戏音乐。 (即检查iPod是否正在播放以实际启动游戏音乐,因为如果您使用AVAudioPlayer,iPod音乐播放器通常会覆盖您的游戏音乐。

+ (bool) IsIpodPlaying{
    if ([[MPMusicPlayerController iPodMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying
        || [[MPMusicPlayerController applicationMusicPlayer] playbackState] == MPMusicPlaybackStatePlaying){
        NSLog(@"iPod IS playing");
        return true;
    }else{
        NSLog(@"iPod NOT playing");
        return false;
    }
}

显然你可以为你的静音按钮做同样的事情。如果正在播放iPod,请忽略任何操作,否则请停止播放您的游戏音乐。

要在按下静音按钮时传递信息,您可以(按个人喜好的顺序):

  • 将您的菜单场景设置为游戏场景的代表,并创建启用或禁用声音的方法(例如userDidEnableSound:
  • 创建一个SoundControl单例类,它具有启用和禁用声音方法,并可以随时访问它们。
  • 使用NSNotificationCenter发送通知,然后在菜单中等待。