复制SKAudioNode对象的问题

时间:2019-02-13 04:49:44

标签: ios swift sprite-kit skaudionode

我目前正在字典中预加载声音效果,例如:

soundEffectsDictionary[SoundEffectType: SKAudioNode]

这样做可以让我预加载游戏中的所有声音效果,并根据需要请求声音效果。我出于演示目的而对此进行了简化:

让fxBoom = soundEffectsDictionary [SoundEffectType.fxBoom] !. copy()为! SKAudioNode

这对于SKSpriteNodesSKTextures等以相同的方式起作用。但是,似乎SKAudioNode不能以这种方式产生副本。当我尝试将副本添加到屏幕上时,它们无法播放。

  1. 如何正确复制SKAudioNode?如果我想重复播放fxBoom两次,那么我将需要两个单独的节点。出于性能原因,我不想从磁盘加载文件,这就是为什么我尝试预加载声音的原因。

  2. 是否有更好的方法来实现我在这里要做的事情?

谢谢。

编辑:

下面是一些简单的代码来演示此问题:

    let audioNode = SKAudioNode(fileNamed: "fxBoom.mp3")
    self.addChild(audioNode) //audio plays, looping indefinitely


    let audioNode = SKAudioNode(fileNamed: "fxBoom.mp3")
    let audioNode2 = audioNode.copy() as! SKAudioNode
    self.addChild(audioNode2) // audio does not play
    audioNode2.run(SKAction.play()) // no difference
    audioNode2.isPaused = false // no difference

0 个答案:

没有答案