Swift 如何在场景之间切换时关闭声音

Swift 如何在场景之间切换时关闭声音,swift,Swift,我在Sprite Kit中创建了这个游戏,在用户点击并开始游戏之前,我可以通过按下按钮使声音静音。然而,当游戏结束并且游戏场景出现时,音乐仍然保持静音。当一个新的游戏场景被调用时,音乐将再次开始播放。任何人都知道如何解决这个问题。这是我的音乐代码 var backgroundMusicPlayer: AVAudioPlayer! func playBackgroundMusic(filename: String) { let url = NSBundle.mainBundle().URLFor

我在Sprite Kit中创建了这个游戏,在用户点击并开始游戏之前,我可以通过按下按钮使声音静音。然而,当游戏结束并且游戏场景出现时,音乐仍然保持静音。当一个新的游戏场景被调用时,音乐将再次开始播放。任何人都知道如何解决这个问题。这是我的音乐代码

var backgroundMusicPlayer: AVAudioPlayer!

func playBackgroundMusic(filename: String) {
let url = NSBundle.mainBundle().URLForResource(
    filename, withExtension: nil)
if (url == nil) {
    println("Could not find file: \(filename)")
    return
}

var error: NSError? = nil
backgroundMusicPlayer =
    AVAudioPlayer(contentsOfURL: url, error: &error)
if backgroundMusicPlayer == nil {
    println("Could not create audio player: \(error!)")
    return
}

backgroundMusicPlayer.numberOfLoops = -1
backgroundMusicPlayer.prepareToPlay()
backgroundMusicPlayer.play()
}



override func didMoveToView(view: SKView) {

    muteSound.name = "muteSound"
    muteSound.position.x = view.center.x
    muteSound.position.y = view.center.y + 100
    self.addChild(muteSound)

    playBackgroundMusic("Box Office.mp3")

}


override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    for touch: AnyObject in touches {
        let location = touch.locationInNode(self)
        let node = self.nodeAtPoint(location)

        if node.name == "muteSound" {
            backgroundMusicPlayer.stop()
        }
}

你不是在静音,而是在停止,这里也没有代码来恢复或在gameover上播放声音。那么,如果用户按下静音按钮,我如何让声音停止?我的意思是,即使出现了一个新场景,也要在某个地方保留一个全局变量Bool,并在按下按钮时将其设置为true/false。然后在播放声音时,检查该变量是否为tru,如果为tru,则不要播放声音。