我有一个游戏,其中有几个教程场景。
我可以使用AVFoundation
和AVAudioPlayer()
为每个场景添加音乐。
我需要做的是能够在特定场景中启动音乐,并让它继续在后台播放仅用于相关场景。
例如:
tutorialMusic
tutorialMusic
tutorialMusic
tutorialMusic
tutorialMusic
并播放mainMenuMusic
我尝试过什么
我尝试将AVAudioPlayer()
放在视图控制器中,但是我发现传播到每个场景,无论它是什么。我也无法找到视图控制器的AVAudioPlayer
实例来阻止它。
我尝试将tutorialMusic
添加到每个教程场景中,但是每次用户打开不同的教程场景时都会重新启动音乐,这很糟糕,如果用户快速移动,会降低性能,真烦人。
我的问题
有没有办法在每个子教程场景中扩展主教程场景,以便AVAudioPlayer
的主实例可以访问并传播到每个教程?
最终我想确保在每个部分(教程菜单场景,教程场景,教程B场景等)中tutorialMusic
仅启动一次并连续播放,直到用户退回到主菜单。
谢谢!
答案 0 :(得分:2)
您可能想要做的是使用 Singleton 。这样,您就可以在应用内的任何位置使用声音播放器。
这可能符合您的需求:https://github.com/raywenderlich/SKTUtils/blob/master/SKTUtils/SKTAudio.swift(Ray Wenderlich)。
像这样使用:SKTAudio.sharedInstance().playBackgroundMusic(filename: yourTutorialMusicName)
。然后在您的菜单中,您可以使用其他音乐再次调用它。
如果有帮助,请告诉我。