Ios SpriteKit背景音乐不会永远循环

Ios SpriteKit背景音乐不会永远循环,ios,swift,xcode,sprite-kit,skaction,Ios,Swift,Xcode,Sprite Kit,Skaction,我正在制作一个简单的有两个场景的SpriteKit游戏,我希望背景音乐无条件地在两个场景中循环。现在,我正在使用 if soundIsPlaying == false { runAction(SKAction.repeatActionForever(backgroundMusicEffect), withKey: "backgroundMusic") soundIsPlaying = true } 在我的菜单场景中,backgroundmusicefect是一个全局变量 let b

我正在制作一个简单的有两个场景的SpriteKit游戏,我希望背景音乐无条件地在两个场景中循环。现在,我正在使用

if soundIsPlaying == false {
   runAction(SKAction.repeatActionForever(backgroundMusicEffect), withKey: "backgroundMusic")
   soundIsPlaying = true
}
在我的菜单场景中,
backgroundmusicefect
是一个全局变量

let backgroundMusicEffect = SKAction.playSoundFileNamed("content/divertimentoK131.mp3", waitForCompletion: true)
当我玩游戏时,音乐从不循环。它总是在一场比赛后停止。如果我删除If-else语句,每次我重新进入菜单时,音乐都会自动播放


有没有更好的方式播放背景音乐?我做错了什么?

我相信你这样做的方式,在第一次循环之后,之后的每个迭代都是“完成”的,因为声音已经完成。如果要使其循环,每次都需要创建一个新的SKAction实例

这当然是一个坏主意,因为名为的播放声音文件设计为只播放一次声音文件,并且尽可能少的过头

正如@Alessandro Omano所评论的,使用SKAudioNode以循环方式播放声音。这是我在中的首选方式,但您将自己限制为>=iOS 9用户


如果您必须支持iOS 8用户(在这一点上,我想说为什么这么麻烦),那么您需要查看libs的AVFoundation部分以获得音频,或者使用OpenAL。

请看下面的答案:谢谢,我在@alessandro ornano的指南中添加了SKAudioNode,但现在音乐在播放一秒钟后崩溃。。有没有办法避免这种情况?(它也无法从一个场景转移到另一个场景)如果要从一个场景转移到另一个场景,需要将AudioNode转移到新场景。至于撞车,我需要更多的信息,我不知道@Alessandro Omano的指南是做什么的,所以在这方面我帮不上忙。。