Для фоновой музыки в моей игре я бы хотел сыграть два звука.Первый звук воспроизводится только один раз в начале (4 такта вступления).После этого второй звук (основная музыка) воспроизводится в бесконечном цикле.Приведенный ниже код, к сожалению, воспроизводит звуки одновременно, а не последовательно (когда я смотрел в AVQueuePlayer, я не смог понять, как зациклить только второй из двух звуков):
var backgroundMusicPlayer: AVAudioPlayer!
var backgroundMusicPlayerIntro: AVAudioPlayer!
func playBackgroundMusic(filename: String, withIntro intro: String) {
let resourceUrl = Bundle.main.url(forResource: filename, withExtension: nil)
let resourceUrlIntro = Bundle.main.url(forResource: intro, withExtension: nil)
guard let url = resourceUrl, let urlIntro = resourceUrlIntro else {
print("Could not find files: \(intro) and/or \(filename)")
return
}
//play the intro first before playing the main loop
do {
try backgroundMusicPlayerIntro = AVAudioPlayer(contentsOf: urlIntro)
backgroundMusicPlayerIntro.numberOfLoops = 1
backgroundMusicPlayerIntro.prepareToPlay()
backgroundMusicPlayerIntro.play()
} catch {
print("Could not create audio player!")
return
}
//main music that gets played on repeat
do {
try backgroundMusicPlayer = AVAudioPlayer(contentsOf: url)
backgroundMusicPlayer.numberOfLoops = -1
backgroundMusicPlayer.prepareToPlay()
backgroundMusicPlayer.play()
} catch {
print("Could not create audio player!")
return
}
}