0

我正在制作一款基本游戏,并尝试为它制作热门音效。在 Rhythmic Fistman 的帮助下,我已经让它们在不同的音高上演奏,但现在我遇到了一个新问题——如果我尝试快速演奏它们,它就会滞后。这似乎不是一个大问题,但在我正在开发的游戏中,每当你移动你的手指时,它就有可能发出敲击声,所以它很快就会变得迟钝,尤其是多点触控。

目前,我在 AVAudioEngine 中有两个用于两个通道的节点,因此我可以一次播放两个 hitsound,我正在使用它来停止其中一个节点,以便它可以播放新的声音:

if playerNode.isPlaying {
    playerNode.stop()
    playerNode.play()
}
playerNode.scheduleFile(file, at: nil, completionHandler: nil)

这样做的问题是,无论声音是否实际播放,isPlaying 总是返回 true,因为它似乎只在你执行 playerNode.stop() 时返回 false,并且由于某种原因它非常滞后,实际上它不那么滞后一个接一个地播放大量的hitsounds。

我认为一个简单的解决方案不是重置节点,而是不播放hitsound,但由于isPlaying 总是返回true,所以我不能这样做。有没有更快的方法让音频节点播放声音?

4

1 回答 1

0

看来 scheduleBuffer 毕竟是我需要的

于 2016-10-14T23:01:43.183 回答