AudioServer
Управляет глобальным микшером, шинами и временем аудио.
AudioServer настраивает шины всего запущенного проекта. Источники передают сигнал в шины, эффекты выполняются по порядку, затем применяется уровень шины и сигнал передаётся в принимающую шину слева. Master выводит общий микс.
Ищите шину по имени через GetBusIndex() и проверяйте -1. Индексы меняются при перестройке layout. Runtime-настройки не сохраняют ресурс проекта автоматически. Аудиомикшер работает независимо от кадров игры; его оценка времени и задержки не является измерением физического звука у слушателя.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Свойства5
BusCountСвойство
public static int BusCount { get; set; }Количество доступных аудиошин.
InputDeviceСвойство
public static string InputDevice { get; set; }Имя текущего устройства для аудиовхода (см. AudioServer.GetInputDeviceList). В системах с несколькими аудиовходами (например, аналоговыми, USB и HDMI аудио) это можно использовать для выбора устройства аудиовхода. Значение "Default" будет записывать звук на общесистемном аудиовходе по умолчанию. Если задано недопустимое имя устройства, значение будет возвращено к "Default".
Примечание: ProjectSettings.audio/driver/enable_input должно быть true для работы аудиовхода. См. также описание этого параметра для предостережений, связанных с разрешениями и настройками конфиденциальности операционной системы.
OutputDeviceСвойство
public static string OutputDevice { get; set; }Имя текущего устройства для аудиовыхода (см. AudioServer.GetOutputDeviceList). В системах с несколькими аудиовыходами (например, аналоговым, USB и HDMI аудио) это можно использовать для выбора устройства аудиовыхода. Значение "Default" будет воспроизводить звук на общесистемном аудиовыходе по умолчанию. Если задано недопустимое имя устройства, значение будет возвращено к "Default".
PlaybackSpeedScaleСвойство
public static float PlaybackSpeedScale { get; set; }Масштабирует скорость воспроизведения звука (например, если установить его на 0.5, звук будет воспроизводиться с половинной скоростью). См. также Engine.TimeScale, чтобы повлиять на общую скорость симуляции, которая не зависит от AudioServer.PlaybackSpeedScale.
SingletonСвойство
public static AudioServerInstance Singleton { get; }Методы57
AddBusvoid
public static void AddBus(int atPosition = -1);Добавляет шину в at_position.
| Имя | Тип | По умолчанию |
|---|---|---|
atPosition | int | -1 |
AddBusEffectvoid
public static void AddBusEffect(int busIdx, AudioEffect effect, int atPosition = -1);Добавляет эффект AudioEffect к шине bus_idx в at_position.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
effect | AudioEffect | — |
atPosition | int | -1 |
GenerateBusLayoutAudioBusLayout
public static AudioBusLayout GenerateBusLayout();Генерирует AudioBusLayout с использованием доступных шин и эффектов.
AudioBusLayoutGetBusChannelsint
public static int GetBusChannels(int busIdx);Возвращает количество каналов шины по индексу bus_idx.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
intGetBusCountint
public static int GetBusCount();intGetBusEffectAudioEffect
public static AudioEffect GetBusEffect(int busIdx, int effectIdx);Возвращает AudioEffect в позиции effect_idx на шине bus_idx.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
effectIdx | int | — |
AudioEffectGetBusEffectCountint
public static int GetBusEffectCount(int busIdx);Возвращает количество эффектов на шине в bus_idx.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
intGetBusEffectInstanceAudioEffectInstance
public static AudioEffectInstance GetBusEffectInstance(int busIdx, int effectIdx, int channel = 0);Возвращает AudioEffectInstance, назначенный заданным индексам шины и эффекта (и, возможно, канала).
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
effectIdx | int | — |
channel | int | 0 |
AudioEffectInstanceGetBusIndexint
public static int GetBusIndex(StringName busName);Возвращает текущий индекс шины по имени или -1, если её нет. После изменения layout ищите индекс заново; не храните его как стабильный идентификатор категории.
| Имя | Тип | По умолчанию |
|---|---|---|
busName | StringName | — |
intGetBusNamestring
public static string GetBusName(int busIdx);Возвращает имя шины с индексом bus_idx.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
stringGetBusPeakVolumeLeftDbfloat
public static float GetBusPeakVolumeLeftDb(int busIdx, int channel);Возвращает пиковую громкость левого динамика с индексом шины bus_idx и индексом канала channel.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
channel | int | — |
floatGetBusPeakVolumeRightDbfloat
public static float GetBusPeakVolumeRightDb(int busIdx, int channel);Возвращает пиковую громкость правого динамика с индексом шины bus_idx и индексом канала channel.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
channel | int | — |
floatGetBusSendStringName
public static StringName GetBusSend(int busIdx);Возвращает имя шины, на которую отправляет данные шина с индексом bus_idx.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
StringNameGetBusVolumeDbfloat
public static float GetBusVolumeDb(int busIdx);Возвращает громкость шины по индексу bus_idx в дБ.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
floatGetBusVolumeLinearfloat
public static float GetBusVolumeLinear(int busIdx);Возвращает громкость шины по индексу bus_idx как линейное значение.
Примечание: Возвращаемое значение эквивалентно результату @GlobalScope.db_to_linear на результате AudioServer.GetBusVolumeDb.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
floatGetDriverNamestring
public static string GetDriverName();Возвращает имя текущего аудиодрайвера. Значение по умолчанию обычно зависит от операционной системы, но может быть переопределено с помощью --audio-driver аргумента командной строки. --headless также автоматически устанавливает аудиодрайвер в Dummy. См. также ProjectSettings.audio/driver/driver.
stringGetInputBufferLengthFramesint
public static int GetInputBufferLengthFrames();Возвращает абсолютный размер буфера входного сигнала микрофона. Он устанавливается равным кратному значению задержки звука и может использоваться для оценки минимальной скорости, с которой необходимо получать кадры.
intGetInputDevicestring
public static string GetInputDevice();stringGetInputDeviceListstring[]
public static string[] GetInputDeviceList();Возвращает имена всех аудиовходных устройств, обнаруженных в системе.
Примечание: ProjectSettings.audio/driver/enable_input должен быть true для работы аудиовхода. См. также описание этого параметра для предупреждений, связанных с разрешениями и настройками конфиденциальности операционной системы.
string[]GetInputFramesVector2[]
public static Vector2[] GetInputFrames(int frames);Возвращает Vector2[], содержащий ровно frames аудиосэмплов из внутреннего буфера микрофона, если он доступен; в противном случае возвращает пустой Vector2[].
Буфер заполняется со скоростью AudioServer.GetInputMixRate кадров в секунду, если AudioServer.SetInputDeviceActive успешно установлен в true.
Сэмплы представляют собой знаковые значения PCM с плавающей запятой в диапазоне от -1 до 1.
| Имя | Тип | По умолчанию |
|---|---|---|
frames | int | — |
Vector2[]GetInputFramesAvailableint
public static int GetInputFramesAvailable();Возвращает количество кадров, доступных для чтения с помощью метода AudioServer.GetInputFrames.
intGetInputMixRatefloat
public static float GetInputMixRate();Возвращает частоту дискретизации на входе AudioServer.
floatGetMixRatefloat
public static float GetMixRate();Возвращает частоту дискретизации на выходе AudioServer.
floatGetOutputDevicestring
public static string GetOutputDevice();stringGetOutputDeviceListstring[]
public static string[] GetOutputDeviceList();Возвращает имена всех устройств вывода звука, обнаруженных в системе.
string[]GetOutputLatencydouble
public static double GetOutputLatency();Возвращает эффективную задержку вывода аудиодрайвера. Она основана на ProjectSettings.audio/driver/output_latency, но точное возвращаемое значение будет отличаться в зависимости от операционной системы и аудиодрайвера.
Примечание: Это может быть затратно; не рекомендуется вызывать AudioServer.GetOutputLatency каждый кадр.
doubleGetPlaybackSpeedScalefloat
public static float GetPlaybackSpeedScale();floatGetSpeakerModeAudioServer.SpeakerMode
public static AudioServer.SpeakerMode GetSpeakerMode();Возвращает конфигурацию динамиков.
AudioServer.SpeakerModeGetTimeSinceLastMixdouble
public static double GetTimeSinceLastMix();Возвращает относительное время в секундах с момента последнего микса.
doubleGetTimeToNextMixdouble
public static double GetTimeToNextMix();Возвращает относительное время до следующего микса в секундах.
doubleIsBusBypassingEffectsbool
public static bool IsBusBypassingEffects(int busIdx);Если true, шина с индексом bus_idx обходит эффекты.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
boolIsBusEffectEnabledbool
public static bool IsBusEffectEnabled(int busIdx, int effectIdx);Если true, эффект с индексом effect_idx на шине с индексом bus_idx включен.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
effectIdx | int | — |
boolIsBusMutebool
public static bool IsBusMute(int busIdx);Если true, шина с индексом bus_idx отключается.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
boolIsBusSolobool
public static bool IsBusSolo(int busIdx);Если true, шина с индексом bus_idx находится в одиночном режиме.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
boolIsStreamRegisteredAsSamplebool
public static bool IsStreamRegisteredAsSample(AudioStream stream);Если true, поток регистрируется как образец. Движку не придется регистрировать его перед воспроизведением образца.
Если false, поток придется регистрировать перед его воспроизведением. Чтобы предотвратить скачки задержек, зарегистрируйте поток как образец с помощью AudioServer.RegisterStreamAsSample.
| Имя | Тип | По умолчанию |
|---|---|---|
stream | AudioStream | — |
boolLockvoid
public static void Lock();Блокирует основной цикл аудиодрайвера. Примечание: Не забудьте разблокировать его после этого.
MoveBusvoid
public static void MoveBus(int index, int toIndex);Перемещает шину с индекса index на индекс to_index.
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
toIndex | int | — |
RegisterStreamAsSamplevoid
public static void RegisterStreamAsSample(AudioStream stream);Принудительно регистрирует поток как образец. Примечание: При вызове этого метода могут возникать скачки задержки, особенно в однопоточных сборках. Рекомендуется вызывать этот метод во время загрузки ресурсов, где скачок задержки может быть замаскирован, вместо регистрации образца непосредственно перед его воспроизведением.
| Имя | Тип | По умолчанию |
|---|---|---|
stream | AudioStream | — |
RemoveBusvoid
public static void RemoveBus(int index);Удаляет шину с индексом index.
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
RemoveBusEffectvoid
public static void RemoveBusEffect(int busIdx, int effectIdx);Удаляет эффект с индексом effect_idx из шины с индексом bus_idx.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
effectIdx | int | — |
SetBusBypassEffectsvoid
public static void SetBusBypassEffects(int busIdx, bool enable);Если true, шина с индексом bus_idx обходит эффекты.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
enable | bool | — |
SetBusCountvoid
public static void SetBusCount(int amount);| Имя | Тип | По умолчанию |
|---|---|---|
amount | int | — |
SetBusEffectEnabledvoid
public static void SetBusEffectEnabled(int busIdx, int effectIdx, bool enabled);Если true, эффект с индексом effect_idx на шине с индексом bus_idx включен.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
effectIdx | int | — |
enabled | bool | — |
SetBusLayoutvoid
public static void SetBusLayout(AudioBusLayout busLayout);Перезаписывает текущий используемый AudioBusLayout.
| Имя | Тип | По умолчанию |
|---|---|---|
busLayout | AudioBusLayout | — |
SetBusMutevoid
public static void SetBusMute(int busIdx, bool enable);Глушит или возвращает выход шины; не останавливает и не приостанавливает её источники. Эффекты данной шины находятся до mute, поэтому Capture в ней может продолжать получать данные.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
enable | bool | — |
SetBusNamevoid
public static void SetBusName(int busIdx, string name);Устанавливает имя шины с индексом bus_idx на name.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
name | string | — |
SetBusSendvoid
public static void SetBusSend(int busIdx, StringName send);Задаёт принимающую шину по имени. При обработке она должна быть левее отправляющей; отсутствующее имя или направление вправо/на себя фактически направляет сигнал в Master. Индекс 0 — Master, у него нет следующего send.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
send | StringName | — |
SetBusSolovoid
public static void SetBusSolo(int busIdx, bool enable);Если true, шина с индексом bus_idx находится в одиночном режиме.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
enable | bool | — |
SetBusVolumeDbvoid
public static void SetBusVolumeDb(int busIdx, float volumeDb);Задаёт усиление шины в дБ: 0 — единичный коэффициент, около -6.02 — половина амплитуды. Это не значение цифрового пика dBFS. Усиление применяется после эффектов шины, перед отправкой дальше. Для нуля пользовательского ползунка удобен mute.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
volumeDb | float | — |
SetBusVolumeLinearvoid
public static void SetBusVolumeLinear(int busIdx, float volumeLinear);Устанавливает громкость как линейное значение шины с индексом bus_idx по volume_linear.
Примечание: Использование этого метода эквивалентно вызову AudioServer.SetBusVolumeDb с результатом @GlobalScope.linear_to_db для значения.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
volumeLinear | float | — |
SetEnableTaggingUsedAudioStreamsvoid
public static void SetEnableTaggingUsedAudioStreams(bool enable);Если установлено значение true, все экземпляры AudioStreamPlayback будут вызывать AudioStreamPlayback._TagUsedStreams на каждом шаге микширования.
Примечание: Это включено по умолчанию в редакторе, так как используется плагинами редактора для предпросмотра аудиопотока.
| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetInputDevicevoid
public static void SetInputDevice(string name);| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
SetInputDeviceActiveError
public static Error SetInputDeviceActive(bool active);Если active равно true, запускает поток входного сигнала с микрофона, указанный в AudioServer.InputDevice, или возвращает ошибку в случае сбоя.
Если active равно false, останавливает поток входного сигнала, если он запущен.
| Имя | Тип | По умолчанию |
|---|---|---|
active | bool | — |
ErrorSetOutputDevicevoid
public static void SetOutputDevice(string name);| Имя | Тип | По умолчанию |
|---|---|---|
name | string | — |
SetPlaybackSpeedScalevoid
public static void SetPlaybackSpeedScale(float scale);| Имя | Тип | По умолчанию |
|---|---|---|
scale | float | — |
SwapBusEffectsvoid
public static void SwapBusEffects(int busIdx, int effectIdx, int byEffectIdx);Меняет местами два эффекта в шине bus_idx.
| Имя | Тип | По умолчанию |
|---|---|---|
busIdx | int | — |
effectIdx | int | — |
byEffectIdx | int | — |
Unlockvoid
public static void Unlock();Разблокирует основной цикл аудиодрайвера. (После блокировки его всегда следует разблокировать.)
Сигналы и события2
BusLayoutChangedСобытие
public static event Action BusLayoutChanged;Издается при добавлении, удалении или перемещении аудиошины.
BusRenamedСобытие
public static event AudioServer.BusRenamedEventHandler BusRenamed;Вызывается, когда аудиошина в bus_index переименовывается из old_name в new_name.
| Имя | Тип | По умолчанию |
|---|---|---|
busIndex | long | — |
oldName | StringName | — |
newName | StringName | — |
AudioServer.PlaybackType
| Значение | Описание |
|---|---|
Default = 0 | Воспроизведение будет считаться воспроизведением типа, объявленного в |
Max = 3 | Представляет размер перечисления |
Sample = 2 | Принудительно считать воспроизведение образцом. Это может обеспечить меньшую задержку и более стабильное воспроизведение (с меньшим риском потрескивания звука) за счет меньшей гибкости.
Примечание: В настоящее время поддерживается только на веб-платформе.
Примечание: |
Stream = 1 | Принудительно рассматривать воспроизведение как поток. |
AudioServer.SpeakerMode
| Значение | Описание |
|---|---|
ModeStereo = 0 | Обнаруживает двух или менее говорящих. |
Surround31 = 1 | Обнаружена конфигурация объемного звучания 3.1. |
Surround51 = 2 | Обнаружена 5.1-канальная система объемного звучания. |
Surround71 = 3 | Обнаружена конфигурация объемного звучания 7.1 каналов. |