我正在尝试获取要在 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)
}
有人可以帮帮我吗?
提前谢谢您!
最佳答案
由于 waitForCompletion
设置为 false,因此该操作在运行时被认为已立即完成。由于这是一个 repeatForever
操作,因此该操作的下一个重复会在第一个播放声音的操作完成之前运行。第二次重复运行,立即导致第三次重复,第三次重复又导致第四次重复,依此类推。最终,所有 SKAction 都填满了太多内存,应用程序被 iOS 终止。
我建议将 waitForCompletion
设置为 true
。这样,在第一个操作完成播放声音之前,该操作的第二次重复不会开始。
希望这有帮助!
关于swift - 播放声音文件时启动时出现白屏 SKAction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47587235/