我决定断绝我与 SKAction.playSoundFileNamed 的痛苦关系,并继续在我们的项目中使用 SKAudioNodes —— 断点是它们完全被中断而没有任何一致性。
我们正在尝试为 SKAction st 创建一个扩展,它将模拟播放 SKAudioNodes 而不会增加延迟,类似于将 playSoundFileNamed 中的 waitForCompletion 属性设置为 false 时。但是,我们正在添加 SKAudioNode,然后在短时间内(3.0 秒)处理它,但在扩展中,这会在任何操作上增加 3.0 秒的延迟。我认为我们必须有这个延迟然后删除,否则我们将不必要地积累 SKAudioNodes。这是我们当前的代码:
func playAudioNode(node: SKSpriteNode?, sound: SoundType, delay: Double)
{
if node == nil
{
return
}
let audioNode = audioNodeDictionary[sound]!.copy() as! SKAudioNode
node!.addChild(audioNode)
let playSound = SKAction.run
{
audioNode.run(.play())
}
node!.run(SKAction.sequence([SKAction.wait(forDuration: delay), playSound, SKAction.wait(forDuration: 3.0), SKAction.removeFromParent()]))
}
有没有人以类似的临时方式使用 SKAudioNodes 并在 SKAction 序列中使用它们,并对实现这一点的最佳方式有任何想法?