我是Objective-C的新手,对于处理基本音频的正确方法感到非常困惑。我有一个简单的游戏完成,但已经与声音问题斗争了几天。
以下是我的理解:
AVAudioPlayer:似乎是播放较长声音的理想选择,例如主题音乐覆盖游戏。
AudioServicesPlaySystemSound:似乎是快速音效的理想选择,不到30秒。
当然,我会继续思考我会将AVAudioPlayer用于主题音乐,而SystemSound则用于我的音效。不幸的是,我立即注意到一个非常恼人的问题 - 这两个是由不同的音量源控制(SystemSoundServices使用铃声音量?)并且通常不能很好地一起玩。这不是大多数应用程序使用的设置。
然后我废弃了AudioServicesPlaySystemSound方法并重新编程了AVAudioPlayer中的所有内容。这对音量很好,但是造成了可怕的延迟,无法处理快速的声音序列。这对声音效果似乎没有用。
我现在正在研究OpenAL,这对我的简单游戏来说似乎太过分了。那么有人可以启发我 - 我错过了什么,或者OpenAL是接近这种常见音乐/ sfx游戏格式的最佳方式吗?
答案 0 :(得分:1)
当你使用AVAudioPlayer时“如果有延迟”,那么也许你做错了。
但是,无论如何我建议您考虑使用AVAudioEngine。它的目的正是为了让你做一些OpenAL所做的事情,但是它具有更简单的编程接口。它非常适合简单的游戏及其音效。 AVAudioEngine上的WWDC 2014视频显示它正好用于此。