首页 > 解决方案 > 复制 SKAudioNode 对象的问题

问题描述

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

soundEffectsDictionary[SoundEffectType: SKAudioNode]

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

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

SKSpriteNodes这对,等以相同的方式起作用SKTextures。但是,似乎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

标签: iosswiftsprite-kitskaudionode

解决方案


推荐阅读