我正在尝试在GameScene.swift文件中播放背景声音文件。但每当我这样做并调用run.SKAction时,屏幕变白,我听到很多静电,直到它崩溃。当我注释掉run.SKAction时,游戏正常启动。我已经尝试将文件格式更改为WAV,MP3,AAC,CAF。但同样的事情发生了。我查看是否拼错了,但我没有。
它给我一条消息说:"来自调试器的消息:由于内存问题终止"
重要提示:" waitForCompletion设置为TRUE,它似乎在音轨开头有一点静电然后正常播放。但是当" waitForCompletion"设置为FALSE我得到白色屏幕。我也有时会收到一条消息说:
SKAction:加载声音资源时出错:" Entry.m4a"
我尝试了几种不同的音轨文件,但总会发生。
这是GameScene()的开头:
class GameScene: SKScene {
var SpaceShip2 = SKSpriteNode(imageNamed:"IntroSpaceShip")
var GameSceneSound = SKAction.playSoundFileNamed("BackgroundSound.wav", waitForCompletion: false)
}
这是我用来调用声音的功能:
func playsound(soundVariable: SKAction){
run(SKAction.repeatForever(soundVariable))
}
这就是我打电话的时候:
override func didMove(to view: SKView) {
playsound(soundVariable: GameSceneSound)
}
有人可以帮助我!
提前谢谢!
答案 0 :(得分:2)
由于waitForCompletion
设置为false,因此认为该操作在运行时已立即完成。由于这是repeatForever
动作,因此动作的下一次重复在播放声音的第一个动作完成之前运行。第二次重复运行,立即导致第三次重复,这导致第四次重复,等等。最终你用所有SKActions填满了太多内存,iOS终止了应用程序。
我建议将waitForCompletion
设置为true
。这样,在第一个动作完成播放声音之前,动作的第二次重复才会开始。
希望这有帮助!