我目前正在字典中预加载音效,例如:
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