Найти в Дзене
Тихий Уголок

Организация FMOD ивентов через ScriptableObjects

перевод оригинальной статьи Алессандро Фама - Organizing FMOD Events with ScriptableObjects
Оглавление

перевод оригинальной статьи Алессандро Фама - Organizing FMOD Events with ScriptableObjects

Hard-coding event paths is often not the best solution to get an overview of the existing Events in the game. For example, if we move or rename an Event inside FMOD Studio, the event path in the code must also be updated. This takes time. It is a bit easier to organize our events with ScriptableObjects.

This method was suggested to me by my friend Ryan . Check out his works!

Скачайте проект Unity & FMOD для этого руководства. Если после открытия проекта у вас возникнут какие-либо ошибки, удалите файл FMODStudioCache.asset, поскольку он содержит старый путь к проекту FMOD Studio.

***

Оглавление

  • Что такое ScriptableObjects?
  • Настройка ScriptableObjects в Unity
  • Проигрывание FMOD ивентов с помощью ScriptableObjects
  • Автоматическое создание скриптов типа Scriptable Object .cs через FMOD Studio с использованием Scripting API

***

Что такое ScriptableObjects?

ScriptableObjects - это asset файлы, используемые для хранения информации. Они очень полезны для хранения данных конфигураций для вашей игры и ваших объектов.

С технической точки зрения ScriptableObjects, как и MonoBehaviours, наследуются от UnityEngine.Object. Мы по-прежнему можем определять поля и методы или использовать некоторые обратные вызовы(callbacks) Unity: Awake(), OnDestroy(), OnEnable() и OnDisable(). Но там отсутствует метод Update(). В отличие от MonoBehaviours, ScriptableObjects не сериализуются (not serialized) в сцене (или префабах) и не используются в качестве компонентов GameObjects. Вместо этого они хранятся как ресурсы в папках проекта - точно так же, как текстуры, модели и файлы скриптов.

***

Настройка ScriptableObjects в Unity

Мы создаем скрипт, который перечисляет события в виде строк для гипотетического игрока. Это позволяет нам создать asset файл ресурсов, который мы можем использовать в других скриптах для доступа к путям ивентов:

Как видим, скрипт наследуется не от MonoBehaviour, а от ScriptableObject. Это означает, что мы не можем использовать этот ScriptableObject напрямую как компонент. Вместо этого мы можем использовать меню Unity для создания asset файла ресурсов, содержащего все данные, которые мы определили:

Создание файла ScriptableObject .asset
Создание файла ScriptableObject .asset

Затем Unity создаст новый asset файл ресурсов под названием New Player Sheet (которое мы, конечно, можем изменить в ранее созданном скрипте). Назовем файл примерно так: PlayerAudio. Когда мы щелкаем по файлу, мы видим пустые поля ивентов FMOD, которые мы можем заполнить нашими ивентами:

Файл PlayerAudio .asset
Файл PlayerAudio .asset

***

Проигрывание FMOD ивентов с помощью ScriptableObjects

Когда мы создаем скрипт для воспроизведения ивентов, мы сначала объявляем ScriptableObject:

[SerializeField ]
private PlayerAudioData playerAudio;

Затем мы обращаемся к любой строковой переменной (string), которую мы объявили в ScriptableObject, и воспроизводим наши звуки::

void Start ( )
{
FMODUnity.RuntimeManager.PlayOneShot(playerAudio.jump);
}

В Unity мы убеждаемся, что переходим (и ссылаемся) на файл ScriptableObject .asset в созданном поле инспектора:

Инспектор в Unity: поле ScriptableObject
Инспектор в Unity: поле ScriptableObject

Теперь, если нам нужно поменять ивент в FMOD Studio, нам просто нужно изменить путь в файле .asset. Это избавляет нас от необходимости копаться в скриптах, которые мы написали несколько недель или месяцев назад.

***

Автоматическое создание скриптов типа Scriptable Object .cs через FMOD Studio с использованием Scripting API

Мы можем расширить функциональность FMOD Studio, используя Scripting API и написав код JavaScript. Один из замечательных способов сделать это - выбрать ивенты FMOD и автоматически экспортировать файл Scriptable Object.cs, который мы можем напрямую использовать в Unity для создания наших assets файлов ресурсов данных. Для этого сначала создайте папку Scripts внутри корневого каталога вашего проекта FMOD. Внутри этой папки создайте новый файл ScriptableObjects.js и вставьте следующий код:

Сохраните файл, откройте проект FMOD Studio. Выберите несколько событий FMOD и нажмите Scripts-> Unity-> ScriptableObject. Введите путь в меню и имя класса для вашего CS-файла. "New_file.cs" будет создан в корневом каталоге вашего проекта FMOD.

пример пути меню из файла созданного из Java скрипта с значениями из примера ("Axe of Time/Audio/Player")
пример пути меню из файла созданного из Java скрипта с значениями из примера ("Axe of Time/Audio/Player")

#unity #unity3d #fmod #audioengine #gamedev #sounddesign #саунддизайн