2014-09-04 32 views
3

我正在編寫一個SpriteKit小遊戲,我想添加一個靜音按鈕,以便您可以在玩我的遊戲時聽到自己的音樂。目前,我只是停止靜音按鈕所在場景(主菜單)的音頻播放。但是即使音頻播放停止,我的遊戲仍會自動停止用戶音樂。我怎樣才能防止呢?如何在SpriteKit/Objective C中添加「靜音」按鈕?

此外,我想將按下靜音按鈕(位於主菜單中)的信息傳遞給我的遊戲場景,以便我還可以將音樂靜音,我該怎麼做? 基本上我如何將一個場景的變量值傳遞給另一個場景?

回答

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發送通知並在菜單中等待。