перевод оригинальной статьи Алессандро Фама - Using PlayOneShot with FMOD Parameters
Можно ли задать параметры при вызове вспомогательного метода PlayOneShot интеграции FMOD Unity, - это вопрос, который задается всеми неоднократно? Действительно, это можно сделать, слегка изменив исходный код интеграции FMOD.
Рассмотрим метод PlayOneShot в RuntimeManager.cs:
Первый метод принимает в качестве аргумента пути строку, которую вы указываете, т.е. "event:/example", преобразует строку в Guid и передает ее во второй метод PlayOneShot. Там происходит реальное воспроизведение. Во втором методе новый EventInstance создается, запускается и освобождается немедленно, так что по окончании воспроизведения экземпляр освобождается из памяти. Это особенно полезно для ванштов - проиграл и забыл, так что вам не придется вручную проверять инстансы для каждого звука, который вы хотите воспроизвести в Unity.
Перегрузка метода в C# может быть использована для воспроизведения ваншота и установки определенного параметра. Проще говоря, это означает, что методы могут иметь одно и то же имя, но разные параметры, например. Вы можете дублировать оба метода и добавить к ним string и float переменные для параметра, чтобы добиться желаемого поведения:
Перед запуском инстанса мы добавляем EventInstance.SetParameterByName ко второму методу, чтобы параметр инстанса устанавливался на основе имени нашего параметра и и численных значений. Теперь мы все еще можем вызывать метод FMODUnity.RuntimeManager.PlayOneShot("event:/example"); когда нам нужно задать параметр для наших обычных звуков, мы передаем в метод строку и переменную float перед проигрыванием звука : FMODUnity.RuntimeManager.PlayOneShot("event:/example", "TestParameter", 2f);. Если вы хотите использовать этот параметр для 3D звуков, повторите всё то же самое для PlayOneShotAttached.
#unity #unity3d #fmod #audioengine #gamedev #sounddesign #саунддизайн