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

Posted

技术标签:

【中文标题】如何在 SpriteKit / Objective C 中添加“静音”按钮?【英文标题】:How do I add a "Mute Sound" button in SpriteKit / Objective C? 【发布时间】:2014-09-04 19:40:12 【问题描述】:

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

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

【问题讨论】:

【参考方案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 发送通知并在菜单中等待。

【讨论】:

以上是关于如何在 SpriteKit / Objective C 中添加“静音”按钮?的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit Objective-C:SKSpriteNode 类实例上的 touchesBegan()

相交节点 ---- Objective-C - Swift - iOS - SpriteKit 节点

我需要在 iOS 应用程序中从 SpriteKit GameViewController 转换为常规视图控制器(Objective-C)

如何在 Swift 中为 SpriteKit 定义类别位掩码枚举?

iOS SpriteKit:以正确的方向移动节点

Swift SKScene 在 Objective-C 项目中显示为空白