我正在编写一个 SpriteKit 小游戏,我想添加一个静音按钮,这样您就可以在玩我的游戏时听到自己的音乐。目前我只是停止静音按钮所在场景的音频播放(主菜单)。但是,即使音频播放停止,我的游戏仍会自动停止用户音乐。我怎样才能防止这种情况发生?
此外,我想将按下静音按钮(位于主菜单中)的信息传递到我的游戏场景,这样我也可以在那里将音乐静音,我该怎么做? 基本上如何将变量值从一个场景传递到另一个场景?
最佳答案
我刚才所做的是检查 iPod Player 是否正常工作,并将其设置为优先于游戏音乐。 (即检查 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 正在播放,请忽略任何操作,否则请停止播放游戏音乐。
要在按下静音按钮时传递信息,您可以(按个人喜好顺序):
- 将您的 Menu 场景设置为 Game 场景的委托(delegate),并创建一个方法来启用或禁用声音(即
userDidEnableSound:
) - 创建一个具有启用和禁用声音方法的 SoundControl 单例类,并在您需要的任何地方访问它们。
- 使用
NSNotificationCenter
发送通知并在菜单中等待。
关于ios - 如何在 SpriteKit/Objective C 中添加 "Mute Sound"按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25673745/