我目前正在字典中预加载声音效果,例如:
soundEffectsDictionary[SoundEffectType: SKAudioNode]
这样做可以让我预加载游戏中的所有声音效果,并根据需要请求声音效果。我出于演示目的而对此进行了简化:
让fxBoom = soundEffectsDictionary [SoundEffectType.fxBoom] !. copy()为! SKAudioNode
这对于SKSpriteNodes
,SKTextures
等以相同的方式起作用。但是,似乎SKAudioNode
不能以这种方式产生副本。当我尝试将副本添加到屏幕上时,它们无法播放。
如何正确复制SKAudioNode
?如果我想重复播放fxBoom两次,那么我将需要两个单独的节点。出于性能原因,我不想从磁盘加载文件,这就是为什么我尝试预加载声音的原因。
是否有更好的方法来实现我在这里要做的事情?
谢谢。
编辑:
下面是一些简单的代码来演示此问题:
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