# Аудио

В данной статье рассматриваются фоновая музыка (BGM) и звуковые эффекты (SFX); для голосов см. руководство по озвучиванию.

Чтобы добавить, отредактировать или удалить ресурсы BGM и SFX, используйте диспетчер аудиоресурсов, доступный через Naninovel -> Resources -> Audio. Вы можете использовать любые аудиоформаты, поддерживаемые Unity.

Если у вас много аудиофайлов и их неудобно назначать через меню редактора, можно просто поместить их в папку Resources/Naninovel/Audio, и они автоматически будут доступны в скриптах. Вы можете дополнительно организовать их с помощью вложенных папок, если хотите; в этом случае используйте слеш (/) при ссылке на них в скриптах naninovel. Например, аудиоклип по адресу: Resources/Naninovel/Audio/Music/Ambient/Noise002.wav можно объявить в скрипте как Music/Ambient/Noise002.

Также можно использовать систему адресируемых ассетов, чтобы вручную распределить ресурсы. Чтобы предоставить доступ к ассету, назначьте адрес, равный пути, который вы использовали бы для его объявления с помощью метода, описанного выше, за исключением опущенной части "Resources/". Например, для объявления BGM "MainTheme.wav" назначьте ассету следующий адрес:Naninovel/Audio/MainTheme. Имейте в виду, что адресируемый провайдер по умолчанию не используется в редакторе; вы можете разрешить его, включив свойство Enable Addressable In Editor в меню конфигурации провайдера ресурсов.

ВНИМАНИЕ

Ассеты аудио, не объявленные через диспетчер ресурсов, не будут доступны в различных выпадающих меню редактора, как например, в том, что используется для выбора Message Sound для актора персонажа.

Поведение воспроизводимого звука можно настроить с помощью контекстного меню Naninovel -> Configuration -> Audio; доступные параметры см. в разделе Руководство по конфигурации.

# Фоновая музыка

Используйте команду @bgm, за которой следует название трека, чтобы управлять воспроизведением музыки в скриптах Naninovel:

; Начать проигрывать зацикленный трек с названием `Sanctuary` 
@bgm Sanctuary

; То же самое, что выше, но в начале используется фейд в 10 секунд, и трек проигрывается только один раз
@bgm Sanctuary fade:10 loop:false

; Изменить громкость всех воспроизводимых музыкальных треков до 50% за 2,5 секунды и зациклить их
@bgm volume:0.5 loop:true time:2.5

Музыкальные треки по умолчанию зациклены. Если название трека не указано в команде @bgm, то командой будут затронуты все проигрываемые в данный момент треки. При вызове трека, который уже воспроизводится, воспроизведение не будет затронуто (трек не начнет воспроизводиться с самого начала), но будут применены указанные параметры (громкость, зацикливание).

Можно воспроизвести вступление трека, за которым следует зацикленная часть, используя параметр intro, например:

; Проиграть `BattleThemeIntro` один раз, а затем сразу же зацикленный `BattleThemeMain`.
@bgm BattleThemeMain intro:BattleThemeIntro

Чтобы остановить воспроизведение музыки, используйте команду @stopBgm, за которой следует название трека. Если название трека не указано, команда остановит все воспроизводимые в данный момент треки.

; Затухание трека `Promenade` в течение 10 секунд и остановка воспроизведения
@stopBgm Promenade fade:10

; Остановить все играющие в данный момент музыкальные треки
@stopBgm

# Звуковые эффекты

Используйте команды @sfx и @stopSfx, за которыми следует название клипа, чтобы управлять воспроизведением звуковых эффектов в сценариях Naninovel:

; Однократно воспроизвести SFX под названием `Explosion`
@sfx Explosion

; Зацикленно воспроизводить SFX `Rain`
@sfx Rain loop:true

; Изменить громкость всех воспроизводимых треков SFX до 75% за 2,5 секунды и отключает зацикливание для всех них
@sfx volume:0.75 loop:false time:2.5

Треки звуковых эффектов по умолчанию не зациклены. Если название трека не указано в команде @sfx, то командой будут затронуты все проигрываемые в данный момент треки. При вызове трека, который уже воспроизводится, воспроизведение не будет затронуто (трек не начнет воспроизводиться с самого начала), но будут применены указанные параметры (громкость, зацикливание).

Чтобы остановить воспроизведение звукового эффекта (вне зависимости, зациклен тот или нет), используйте команду @stopSfx, за которой следует название трека. Если название трека не указано, команда остановит все воспроизводимые в данный момент треки.

; Затухание и остановка трека `Rain` в течение 15 секунд
@stopSfx Rain fade:15

; Остановить все играющие в данный момент треки звуковых эффектов
@stopSfx

# Аудиомикшер

Naninovel использует ассет аудиомикшера при воспроизведении аудио для разделения каналов BGM, SFX и голосовой озвучки.

В меню конфигурации аудио можно назначить пользовательский ассет микшера, изменить группы, используемые для каждого аудиоканала, и контроллеры регулировки громкости (имена открытых параметров). Если пользовательские ассеты микшера не назначены, то по умолчанию будет использоваться стандартный.

Чтобы воспроизвести звук через пользовательскую группу в микшере, укажите путь к группе параметром group, доступным в командах @bgm, @sfx и @voice.

; Воспроизвести зацикленное аудио `Noise` через группу микшера `Master/Ambient`.
@sfx Noise loop:true group:Master/Ambient

; Воспроизвести голосовое аудио `ScaryVoice` через группу микшера `Master/Reverb`.
@voice ScaryVoice group:Master/Reverb

Группы извлекаются с помощью метода FindMatchingGroups(groupPath) текущего назначенного ассета аудиомикшера; см. документацию Unity для получения дополнительной информации об ожидаемом формате пути. В случае, если несколько групп связаны с предоставленным путем, использоваться для воспроизведения звука будет первая из них.

В скриптах C# используемый в настоящее время аудиомикшер можно получить с помощью сервиса движка IAudioManager.

var audioManager = Engine.GetService<IAudioManager>();
var audioMixer = audioManager.AudioMixer;
Обновлено: October 5, 2020