В настоящее время я предварительно загружаю звуковые эффекты в словарь, например:
soundEffectsDictionary[SoundEffectType: SKAudioNode]
Это позволяет мне предварительно загрузить все звуковые эффекты в игре и запросить звуковой эффект по мере необходимости.Я упрощаю это для демонстрационных целей:
let fxBoom = soundEffectsDictionary [SoundEffectType.fxBoom] !. copy () as!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