SpriteKit背景音乐永远不会循环播放

时间:2016-07-22 13:57:12

标签: ios swift xcode sprite-kit skaction

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

if soundIsPlaying == false {
   runAction(SKAction.repeatActionForever(backgroundMusicEffect), withKey: "backgroundMusic")
   soundIsPlaying = true
}

在我的菜单场景中backgroundMusicEffect是一个全局变量

let backgroundMusicEffect = SKAction.playSoundFileNamed("content/divertimentoK131.mp3", waitForCompletion: true)

当我玩游戏时,音乐永远不会循环。它总是在一场比赛后停止。如果我删除if-else语句,每次重新进入菜单时音乐都会自动播放。

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

1 个答案:

答案 0 :(得分:1)

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

这当然是一个坏主意,因为playSoundFileNamed的目的是只播放一次声音文件,尽可能少。“

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

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