Каков наилучший подход к аудио в простой игре для iOS?
Я новичок в Objective-C и очень озадачен правильным способом обработки базового звука. У меня завершена простая игра, но я несколько дней боролся с проблемами со звуком.
Вот мое понимание:
AVAudioPlayer: кажется идеальным для воспроизведения более длинного звука, например музыкальной темы, наложенной на игру.
AudioServicesPlaySystemSound: кажется идеальным для быстрых звуковых эффектов, менее 30 секунд.
Естественно, я бы продолжил думать, что буду использовать AVAudioPlayer для музыкальной темы и SystemSound для звуковых эффектов. К сожалению, я сразу заметил очень неприятную проблему - они управляются разными источниками громкости (SystemSoundServices использует громкость звонка??) и, как правило, не очень хорошо играют вместе. Это не может быть настройка, которую использует большинство приложений.
Затем я отказался от подхода AudioServicesPlaySystemSound и перепрограммировал все в AVAudioPlayer. Это работало нормально для громкости, но вызывало ужасную задержку и не могло обработать быструю последовательность звуков. Это не кажется полезным для звуковых эффектов.
Сейчас я изучаю OpenAL, который кажется СЕРЬЕЗНЫМ излишним для моей простой игры. Так может кто-нибудь просветить меня - я что-то упустил или OpenAL - лучший способ приблизиться к этому общему формату музыки /sfx?
1 ответ
Если при использовании AVAudioPlayer "возникает задержка", возможно, вы делаете это неправильно.
Однако в любом случае я бы посоветовал вам рассмотреть AVAudioEngine. Его цель - дать вам возможность делать то же, что делает OpenAL, но с гораздо более простым интерфейсом программирования. Это идеально подходит для простой игры и ее звуковые эффекты. Видео WWDC 2014 на AVAudioEngine показывает, что оно используется именно для этого.