在简单的 iOS 游戏中,音频的最佳方法是什么?

What is the best approach for audio in a simple iOS game?

我是 Objective-C 的新手,对处理基本音频的正确方法感到非常困惑。我已经完成了一个简单的游戏,但几天来一直在与声音问题作斗争。

这是我的理解:

AVAudioPlayer: 似乎很适合播放较长的声音,例如覆盖游戏的主题音乐。

AudioServicesPlaySystemSound: 似乎是快速音效的理想选择,不到 30 秒。

自然地,我会继续考虑我将使用 AVAudioPlayer 作为主题音乐,使用 SystemSound 作为我的音效。不幸的是,我立即注意到一个非常烦人的问题 - 两者由不同的音量源控制(SystemSoundServices 使用铃声音量??)并且通常不能一起播放。这不可能是大多数应用程序使用的设置。

然后我放弃了 AudioServicesPlaySystemSound 方法并重新编程了 AVAudioPlayer 中的所有内容。这对于音量来说效果很好,但会导致严重的延迟,并且无法处理快速的声音序列。这似乎对音效没有用。

我现在正在研究 OpenAL,这对我的简单游戏来说似乎太过分了。那么有人可以启发我吗 - 我是否遗漏了什么或者 OpenAL 是处理这种常见 music/sfx 游戏格式的最佳方式吗?

如果"there's a lag"当你使用AVAudioPlayer时,那么你可能做错了。

但是,无论如何我建议你考虑AVAudioEngine。它的目的正是让你做 OpenAL 做的那种事情,但有一个更简单的编程接口。它非常适合简单的游戏及其音效。 AVAudioEngine 上的 WWDC 2014 视频显示它正是用于此目的。