在 swift sprite kit 游戏中导致游戏延迟的声音?

Sound causing game to lag in swift sprite kit game?

新代码

class SceneTwo: SKScene, SKPhysicsContactDelegate {

   let flap = SKAction.playSoundFileNamed("flap.caf", waitForCompletion: false)

   let whack = SKAction.playSoundFileNamed("whack.caf", waitForCompletion: false)

   let tap = SKAction.playSoundFileNamed("tap.caf", waitForCompletion: false)

那我就把

运行(点击) 运行(襟翼)等 必要时..

您好,我想知道我在游戏中播放声音时使用的编码是否正确。在某些情况下,我的游戏类似于 Flappy bird。每次触摸屏幕时播放一个声音(当鸟有向上的冲动时)第二个声音是当鸟在两面墙之间收集硬币时。

我注意到这两种声音都会导致我的游戏延迟。

下面是我的游戏相关声音代码。

import AVFoundation   

   var flap: AVAudioPlayer?

   var tap: AVAudioPlayer?

override func didMove(to view: SKView) {
    tap?.prepareToPlay()


    flap?.prepareToPlay()


func playFlap() {
    let url = Bundle.main.url(forResource: "flap", withExtension: "caf")!

    do {
        flap = try AVAudioPlayer(contentsOf: url)
        guard let flap = flap else { return }


        flap.play()
    } catch let error {
        print(error.localizedDescription)
    }
}


func playTap() {
    let url = Bundle.main.url(forResource: "tap", withExtension: "caf")!

    do {
        tap = try AVAudioPlayer(contentsOf: url)
        guard let tap = tap else { return }


        tap.play()
    } catch let error {
        print(error.localizedDescription)
    }
}

在此之后我只是

playTap()
playFlap()

到需要的地方。

声音很清晰,只是在发出声音时似乎让我的生成墙跳了一点。 我做错了什么吗?

由于没有预加载声音文件,您出现了延迟。您可以在应用程序启动时预加载它们,然后在需要时播放它们。作为参考查看此

如果您仍然遇到同样的问题,那么您可以在后台队列中添加声音,如图所示here

let qualityOfServiceClass = QOS_CLASS_BACKGROUND
let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
dispatch_async(backgroundQueue, {
    audioPlayer.play()
})