在简单的 iOS 游戏中音频的最佳方法是啥?
Posted
技术标签:
【中文标题】在简单的 iOS 游戏中音频的最佳方法是啥?【英文标题】:What is the best approach for audio in a simple iOS game?在简单的 iOS 游戏中音频的最佳方法是什么? 【发布时间】:2015-01-15 01:46:06 【问题描述】:我是 Objective-C 的新手,对处理基本音频的正确方法感到非常困惑。我完成了一个简单的游戏,但几天来一直在与声音问题作斗争。
这是我的理解:
AVAudioPlayer:似乎非常适合播放较长的声音,例如覆盖游戏的主题音乐。
AudioServicesPlaySystemSound:似乎非常适合快速音效,不到 30 秒。
我自然会继续认为我会使用 AVAudioPlayer 来制作主题音乐,而 SystemSound 来制作我的音效。不幸的是,我立即注意到一个非常烦人的问题 - 两者由不同的音量源控制(SystemSoundServices 使用铃声音量??)并且通常不能很好地配合使用。这不是大多数应用程序使用的设置。
然后我放弃了 AudioservicesPlaySystemSound 方法并重新编程了 AVAudioPlayer 中的所有内容。这对音量效果很好,但会导致严重的延迟并且无法处理快速的声音序列。这似乎对音效没有用处。
我现在正在研究 OpenAL,这对于我的简单游戏来说似乎是严重的矫枉过正。那么有人可以告诉我 - 我是否遗漏了什么或者 OpenAL 是处理这种常见音乐/sfx 游戏格式的最佳方式?
【问题讨论】:
"重新编程了 AVAudioPlayer 中的所有内容。这对音量效果很好,但会导致严重的延迟并且无法处理快速的声音序列" 那么你做错了。展示你是如何做到的。 对了,新的AVAudioEngine呢???正如 WWDC 2014 视频中有关它的讨论所示,它非常适合游戏。 【参考方案1】:如果您在使用 AVAudioPlayer 时“有延迟”,那么您可能做错了。
但是,无论如何,我建议您考虑使用 AVAudioEngine。它的目的正是让你做 OpenAL 所做的事情,但使用更简单的编程接口。它非常适合简单的游戏及其音效。 AVAudioEngine 上的 WWDC 2014 视频显示它正是用于此目的。
【讨论】:
谢谢。我想我一定是错误地实现了 AVAudioPlayer,因为它会滞后。只要我知道它能够顺利运行一系列快速的音效,我就会回去再试一次,或者我会检查 AVAudioEngine。 只是为了跟进这一点,我仍然会因为快速触摸而明显滞后,而且我开始认为这不仅仅是我。见this link。"There's still some pretty noticeable latency when using AVAudioPlayer; it might be OK for simple sound effects, but there's always OpenAL for more precise and timely playback."
我会在我的回答中加上一个“也许”,所以这不是一个笼统的陈述!以上是关于在简单的 iOS 游戏中音频的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章