2015-01-15 4 views
0

Я новичок в Objective-C и очень запутался в правильном способе обработки основного звука. У меня есть простая игра, но в течение нескольких дней они боролись со звуковыми проблемами.Каков наилучший подход для аудио в простой игре для iOS?

Вот мое понимание:

AVAudioPlayer: Кажется, идеально подходит для воспроизведения более длинный звука, например, музыкальной темы наложенной игры.

AudioServicesPlaySystemSound: Кажется идеальным для быстрых звуковых эффектов менее 30 секунд.

Естественно, я бы продолжил думать, что я буду использовать AVAudioPlayer для музыки темы и SystemSound для своих звуковых эффектов. К сожалению, я сразу заметил очень раздражающую проблему - два управляются разными источниками тома (SystemSoundServices использует громкость звонка?) И, как правило, не играют вместе. Это не может быть настройка, которую использует большинство приложений.

Затем я отказался от подхода AudioServicesPlaySystemSound и перепрограммировал все в AVAudioPlayer. Это отлично работало для громкости, но вызвало ужасное отставание и не могло обработать быструю последовательность звуков. Это не кажется полезным для звуковых эффектов.

Я сейчас ищу OpenAL, который кажется СЕРЬЕЗНЫМ излишеством для моей простой игры. Так может кто-нибудь, пожалуйста, просветить меня - Я что-то упустил или это OpenAL лучший способ приблизиться к этому обычному формату музыки/sfx?

+0

«перепрограммировал все в AVAudioPlayer.Это отлично работает для тома, но вызвало ужасное отставание и не может обработать быструю последовательность звуков». Тогда вы делаете это неправильно. Покажите, как вы это делаете. – matt

+0

Кстати, как насчет нового AVAudioEngine ??? Это идеально подходит для игр, как показывает дискуссия в видео WWDC 2014 об этом. – matt

ответ

1

Если «есть задержка» при использовании AVAudioPlayer, возможно, вы делаете это неправильно.

Однако в любом случае я бы посоветовал вам рассмотреть AVAudioEngine. Его цель - позволить вам делать то, что делает OpenAL, но с гораздо более простым интерфейсом программирования. Он идеально подходит для простой игры и ее звуковых эффектов. Видео WWDC 2014 на AVAudioEngine показывает, что оно используется именно для этого.

+0

Спасибо. Думаю, я, должно быть, неправильно использовал AVAudioPlayer, чтобы он отставал. Пока я знаю, что он способен плавно работать для быстрой последовательности звуковых эффектов, тогда я вернусь и попробую еще раз, или я проверю AVAudioEngine. – stobin

+0

Просто для того, чтобы следить за этим, я все еще получаю заметное отставание для быстрых касаний, и я начинаю думать, что это не только я. См. [Эту ссылку] (http://gregheo.com/blog/simple-audio/). «При использовании AVAudioPlayer по-прежнему наблюдается довольно заметная латентность, возможно, это нормально для простых звуковых эффектов, но для более точного и своевременного воспроизведения всегда есть OpenAL». « – stobin

+0

Я поставлю« возможно »в свой ответ, так что это не такое одеяло! – matt

Смежные вопросы