swift/Spritekit : Play music through specific scenes

标签 swift sprite-kit avfoundation avaudioplayer

我有一个游戏,其中有几个教程场景。

我可以使用 AVFoundationAVAudioPlayer() 将音乐添加到每个场景。

我需要做的是能够在特定场景中启动音乐,并让它仅在相关场景的后台继续播放。

例如:

  1. 在教程菜单中启动tutorialMusic
  2. 继续教程 A 中的tutorialMusic
  3. 继续教程 B 中的tutorialMusic
  4. 在教程菜单中继续tutorialMusic
  5. 在主菜单中停止tutorialMusic并播放mainMenuMusic

我尝试过的

我尝试将 AVAudioPlayer() 放置在 View Controller 中,但是我发现它会传播到每个场景,无论它是什么。我也无法找到 View Controller 的 AVAudioPlayer 实例来停止它。

我尝试将tutorialMusic添加到每个教程场景中,但是每次用户打开不同的教程场景时都会重新启动音乐,这很草率,如果用户移动得很快,它就会降低质量性能而且真的很烦人。

我的问题

有没有办法在每个子教程场景中扩展主教程场景,以便可以访问 AVAudioPlayer 的主实例并在每个教程中传播?

最终,我想确保在每个部分(教程菜单场景、教程 A 场景、教程 B 场景等)中,tutorialMusic 仅启动一次并持续播放,直到用户退出返回到主菜单。

谢谢!

最佳答案

您可能想要做的是使用单例。这样,您就可以在应用程序中的任何位置使用声音播放器。

这里可能适合您的需求:https://github.com/raywenderlich/SKTUtils/blob/master/SKTUtils/SKTAudio.swift (雷·文德利希)。

像这样使用:SKTAudio.sharedInstance().playBackgroundMusic(filename: yourTutorialMusicName)。然后在菜单中用其他音乐再次调用它。

请告诉我是否有帮助。

关于 swift/Spritekit : Play music through specific scenes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31191034/

相关文章:

ios - SpriteKit 矢量图形性能

swift - 身份验证按钮在 Fabric Digits Integration 中不可见

ios - Realm 中 NSData 的可选列表 - Swift

ios - 如何在 Xcode 中调整场景大小?

iphone - AVAudioPlayer是否可以循环播放大型音频文件而没有听得见的间隙?

iphone - AVMutableVideoComposition 中的淡入淡出

swift - AVAudioPlayerNode.Stop 上的 AVFoundation Mutex 互锁

arrays - 如何在 Swift Xcode 6.4 的 TableView 中显示 Parse 数组

swift - 在 rightBarButtonItem 中访问 UIButton

swift - 使用 SpriteKit/Views 与 ViewController 显示关卡