我似乎无法找到有关SKAudioNode的更多信息.我怎么只播放一次声音?我不想重复声音.
我想要完成的是每次子弹产生时用spritekit播放一个短的激光声.
不幸的是,@ KnightOfDragon所说的不正确(但我没有足够的声誉来评论).
SKAudioNode
已经在iOS 9中引入并且意味着SKAction.playSoundFileNamed(...)
它可以替代它,因为它功能更强大(您可以将它作为子项添加到SpriteKit中SKNode
,如果属性positional
设置为true,则会自动添加3D音频混合).
要SKAudioNode
使用以下代码播放声音一次:
if #available(iOS 9, *) { let pling = SKAudioNode(fileNamed: "pling.wav") // this is important (or else the scene starts to play the sound in // an infinite loop right after adding the node to the scene). pling.autoplayLooped = false someNode.addChild(pling) someNode.runAction(SKAction.sequence([ SKAction.waitForDuration(0.5), SKAction.runBlock { // this will start playing the pling once. pling.runAction(SKAction.play()) } ]) } else { // do it the old way }更新
看看这里,如何在音频节点上使用Actions:SKAction-> Audio-Stuff.文件说:
使用SKAction playSoundFileNamed:waitForCompletion:仅用于短期杂费.使用AVAudioPlayer可以长时间播放背景音乐.
但这并不意味着,一个SKAudioNode
不应使用一次性音频.用playSoundFileNamed
你无法改变音量或暂停/停止播放等.