перевод оригинальной статьи Алессандро Фама - FMOD Mixer in Unity
Всеми функциями микшера FMOD можно управлять через Unity. В этом руководстве мы будем изменять громкость шин, VCA, а также запускать снепшоты (snapshots) прямо из Unity с помощью кода.
Скачайте проект Unity & FMOD для этого руководства. Если после открытия проекта у вас возникнут какие-либо ошибки, удалите файл FMODStudioCache.asset, поскольку он содержит старый путь к проекту FMOD Studio.
Видео версия туториала (на английском языке):
***
Оглавление
- Регулятор громкости FMOD Studio Bus в Unity
- Объявление шины FMOD
- Захват шины
- Регулировка громкости шины
- регулятор громкости FMOD Studio VCA в Unity
- Запуск снепшотов (snapshots) FMOD в Unity
***
Регулятор громкости FMOD Studio Bus в Unity
Регуляцию громкости шины в Unity можно получить за три простых шага:
- Объявление шины
- Захват шины
- Регулировка громкости шины
Давайте подробнее рассмотрим эти шаги.
Объявление шины FMOD
Как и в случае с простыми экземплярами событий (далее истансов)(Instance), мы должны сначала объявить шину:
FMOD.Studio.Bus bus;
Захват шины
Теперь мы можем вызвать желаемую шину в методе Unity Start():
bus = FMODUnity.RuntimeManager.GetBus( "bus:/MusicBus" );
bus: / MusicBus - это строка, которая относится к группам, созданным на вкладке маршрутизации в FMOD Studio Mixer. Мы можем скопировать этот путь, щелкнув правой кнопкой мыши по группе и выбрав опцию Copy Path:
Регулировка громкости шины
В методе Update() теперь мы можем установить желаемую громкость для шины. Команда Bus.setVolume. setVolume принимает число с плавающей запятой в диапазоне от 0 (без звука) до 1 (полная громкость). Конечно, также можно работать со шкалой дБ. Поэтому мы объявляем переменных типа float:
[ SerializeField ] [Range( -80f , 10f )]
private float busVolume;
private float volume;
busVolume - это float переменная, которой мы можем управлять с помощью ползунка в инспекторе. Она должна представлять собой желаемое значение громкости в дБ. Также мы используем формулу для преобразования дБ в линейную шкалу с помощью переменной volume:
volume = Mathf.Pow( 10.0f , busVolume / 20f );
Полный скрипт работы с шиной выглядит так:
***
регулятор громкости FMOD Studio VCA в Unity
FMOD Studio дает нам возможность связывать шины с конкретными VCA каналами. Это полезно, например, когда мы хотим отдельно регулировать громкость музыки и звуковые эффекты. С точки зрения кода регулятор громкости VCA работает так же, как звуковые шины. Но на этот раз мы объявляем VCA канал:
FMOD.Studio.VCA vca;
Вместо GetBus() используем GetVCA():
vca = FMODUnity.RuntimeManager.GetVCA( "vca:/MusicVCA" ) ;
Затем мы снова используем метод setVolume(), чтобы изменить громкость VCA:
vca.setVolume(volume);
Полный скрипт для VCA выглядит так:
***
Запуск снепшотов (snapshots) FMOD в Unity
Снепшоты (snapshots) также ведут себя в основном как обычные события (далее ивенты) (events). Запуск снепшотов (snapshots) абсолютно похож на ручное воспроизведение 2D / 3D ивентов из кода.
Сначала мы объявляем инстанс снепшота (snapshot):
FMOD.Studio.EventInstance snapshot;
Затем мы создаем инстанс и воспроизводим или останавливаем его в методе Unity Update():
void Update ( )
{
if (Input.GetKeyDown(KeyCode.Space))
{
snapshot = FMODUnity.RuntimeManager.CreateInstance( "snapshot:/FilterMusic" );
snapshot.start();
}
else if (Input.GetKeyDown(KeyCode.LeftControl))
{
snapshot.stop(FMOD.Studio.STOP_MODE.ALLOWFADEOUT);
snapshot.release();
}
}
Как видите, меняется только путь ивента. Вместо event: / теперь мы используем snapshot: /, чтобы указать правильный путь. Взгляните на прилагаемый проект, чтобы поэкспериментировать со снепшотами (snapshots).
#unity #unity3d #fmod #audioengine #gamedev #sounddesign #саунддизайн