Каков наилучший подход к аудио в простой игре для iOS?

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

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

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

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

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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам