AudioStreamPlayer3D
Источник звука с направлением и затуханием в мире 3D.
AudioStreamPlayer3D рассчитывает звук относительно активного слушателя 3D. AudioListener3D позволяет отделить точку слуха от камеры. У viewport должен быть включён приём звука 3D.
Модель затухания и UnitSize определяют изменение уровня с расстоянием. Положительный MaxDistance дополнительно ограничивает дальность. Параметры не меняют размеры объектов. Для эффекта стены нужна отдельная логика: наличие коллизии не заглушает звук автоматически. Пространственные обновления выполняются на физическом шаге.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
AudioStreamPlayer3DКонструктор
public AudioStreamPlayer3D();Свойства22
AreaMaskСвойство
public uint AreaMask { get; set; }Определяет, какие слои Area3D влияют на звук для эффектов реверберации и аудиошины. Области можно использовать для перенаправления AudioStreams так, чтобы они воспроизводились на определенной аудиошине. Примером того, как это можно использовать, является создание области «воды», чтобы звуки, воспроизводимые в воде, перенаправлялись через аудиошину, чтобы они звучали так, как будто они воспроизводятся под водой.
AttenuationFilterCutoffHzСвойство
public float AttenuationFilterCutoffHz { get; set; }Частота среза фильтра нижних частот ослабления в Гц. Звук выше этой частоты ослабляется сильнее, чем звук ниже этой частоты. Чтобы отключить этот эффект, установите его на 20500, так как эта частота выше предела человеческого слуха.
AttenuationFilterDbСвойство
public float AttenuationFilterDb { get; set; }Величина, в которой фильтр влияет на громкость, в децибелах.
AttenuationModelСвойство
public AudioStreamPlayer3D.AttenuationModelEnum AttenuationModel { get; set; }Решает, должен ли звук становиться тише с расстоянием линейно, квадратично, логарифмически или не зависеть от расстояния, эффективно отключая затухание.
AutoplayСвойство
public bool Autoplay { get; set; }Если true, звук воспроизводится при добавлении узла AudioStreamPlayer3D в дерево сцены.
BusСвойство
public StringName Bus { get; set; }Шина, на которой воспроизводится этот звук.
Примечание: При установке этого свойства имейте в виду, что проверка соответствия данного имени существующей шине не выполняется. Это связано с тем, что макеты аудиошин могут быть загружены после установки этого свойства. Если данное имя не может быть разрешено во время выполнения, оно вернется к "Master".
DopplerTrackingСвойство
public AudioStreamPlayer3D.DopplerTrackingEnum DopplerTracking { get; set; }Решает, на каком этапе следует рассчитывать эффект Доплера.
Примечание: Если AudioStreamPlayer3D.DopplerTracking не является AudioStreamPlayer3D.DopplerTrackingEnum.Disabled, но в текущем Camera3D/AudioListener3D отключён доплеровский трекинг, эффект Доплера будет слышен, но не будет учитывать движение текущего слушателя. Для получения точного доплеровского трекинга доплеровский трекинг следует включить как в AudioStreamPlayer3D, так и в текущем Camera3D/AudioListener3D.
EmissionAngleDegreesСвойство
public float EmissionAngleDegrees { get; set; }Угол, под которым звук достигает слушателя без ослабления.
EmissionAngleEnabledСвойство
public bool EmissionAngleEnabled { get; set; }Если true, звук должен быть ослаблен в соответствии с направлением звука.
EmissionAngleFilterAttenuationDbСвойство
public float EmissionAngleFilterAttenuationDb { get; set; }Коэффициент затухания, используемый, если слушатель находится за пределами AudioStreamPlayer3D.EmissionAngleDegrees и задан AudioStreamPlayer3D.EmissionAngleEnabled, в децибелах.
MaxDbСвойство
public float MaxDb { get; set; }Устанавливает абсолютный максимум уровня звука в децибелах.
MaxDistanceСвойство
public float MaxDistance { get; set; }Расстояние, за пределами которого звук больше не слышен. Действует только если установлено значение больше 0.0. AudioStreamPlayer3D.MaxDistance работает в паре с AudioStreamPlayer3D.UnitSize. Однако, в отличие от AudioStreamPlayer3D.UnitSize, поведение которого зависит от AudioStreamPlayer3D.AttenuationModel, AudioStreamPlayer3D.MaxDistance всегда работает линейно. Это можно использовать для предотвращения необходимости микширования звука AudioStreamPlayer3D, когда слушатель находится далеко, что экономит ресурсы ЦП.
MaxPolyphonyСвойство
public int MaxPolyphony { get; set; }Максимальное число одновременных голосов этого плеера. Новый Play при превышении лимита вытесняет самый старый голос. Используйте положительное значение; для одного управляемого музыкального потока задайте 1.
PanningStrengthСвойство
public float PanningStrength { get; set; }Масштабирует силу панорамирования для этого узла, умножая базовый ProjectSettings.audio/general/3d_panning_strength на этот коэффициент. Если произведение равно 0.0, то стереопанорамирование отключено, а громкость одинакова для всех каналов. Если произведение равно 1.0, то один из каналов будет отключен, когда звук расположен точно слева (или справа) от слушателя.
Двухканальные стереосистемы реализуют стандарт WebAudio для панорамирования StereoPannerNode, где громкость равна косинусу половины угла азимута к уху.
Для других схем расположения динамиков, таких как 5.1 и 7.1, реализован алгоритм SPCAP (Амплитуда коррекции спикера-установка).
PitchScaleСвойство
public float PitchScale { get; set; }Высота тона и темп звука как множитель частоты дискретизации аудиосэмпла.
PlaybackTypeСвойство
public AudioServer.PlaybackType PlaybackType { get; set; }Тип воспроизведения потокового проигрывателя. Если установлено значение, отличное от значения по умолчанию, будет принудительно выбран этот тип воспроизведения.
PlayingСвойство
public bool Playing { get; set; }Если true, звук воспроизводится или поставлен в очередь на воспроизведение (см. AudioStreamPlayer3D.Play).
StreamСвойство
public AudioStream Stream { get; set; }Ресурс AudioStream для воспроизведения.
StreamPausedСвойство
public bool StreamPaused { get; set; }Приостанавливает существующие голоса или возобновляет их. Без голосов предварительная команда не сохраняется. В режиме Stream пауза делает IsPlaying() ложным, сохраняя HasStreamPlayback().
UnitSizeСвойство
public float UnitSize { get; set; }Фактор эффекта затухания. Более высокие значения делают звук слышимым на большем расстоянии.
VolumeDbСвойство
public float VolumeDb { get; set; }Базовый уровень звука до затухания, в децибелах.
VolumeLinearСвойство
public float VolumeLinear { get; set; }Базовый уровень звука до затухания, как линейное значение.
Примечание: Этот член изменяет AudioStreamPlayer3D.VolumeDb для удобства. Возвращаемое значение эквивалентно результату @GlobalScope.db_to_linear для AudioStreamPlayer3D.VolumeDb. Установка этого члена эквивалентна установке AudioStreamPlayer3D.VolumeDb на результат @GlobalScope.linear_to_db для значения.
Методы50
GetAreaMaskuint
public uint GetAreaMask();uintGetAttenuationFilterCutoffHzfloat
public float GetAttenuationFilterCutoffHz();floatGetAttenuationFilterDbfloat
public float GetAttenuationFilterDb();floatGetAttenuationModelAudioStreamPlayer3D.AttenuationModelEnum
public AudioStreamPlayer3D.AttenuationModelEnum GetAttenuationModel();AudioStreamPlayer3D.AttenuationModelEnumGetBusStringName
public StringName GetBus();StringNameGetDopplerTrackingAudioStreamPlayer3D.DopplerTrackingEnum
public AudioStreamPlayer3D.DopplerTrackingEnum GetDopplerTracking();AudioStreamPlayer3D.DopplerTrackingEnumGetEmissionAnglefloat
public float GetEmissionAngle();floatGetEmissionAngleFilterAttenuationDbfloat
public float GetEmissionAngleFilterAttenuationDb();floatGetMaxDbfloat
public float GetMaxDb();floatGetMaxDistancefloat
public float GetMaxDistance();floatGetMaxPolyphonyint
public int GetMaxPolyphony();intGetPanningStrengthfloat
public float GetPanningStrength();floatGetPitchScalefloat
public float GetPitchScale();floatGetPlaybackPositionfloat
public float GetPlaybackPosition();Возвращает позицию последнего созданного голоса в секундах, а не общее время всех голосов. Между смешиваниями значение может меняться ступенчато. Для одного потока со скоростью 1 оценку можно уточнить временем после последнего mix; паузу, перемотку и задержку вывода учитывайте отдельно.
floatGetPlaybackTypeAudioServer.PlaybackType
public AudioServer.PlaybackType GetPlaybackType();AudioServer.PlaybackTypeGetStreamAudioStream
public AudioStream GetStream();AudioStreamGetStreamPausedbool
public bool GetStreamPaused();boolGetStreamPlaybackAudioStreamPlayback
public AudioStreamPlayback GetStreamPlayback();Возвращает объект AudioStreamPlayback, связанный с этим AudioStreamPlayer3D.
AudioStreamPlaybackGetUnitSizefloat
public float GetUnitSize();floatGetVolumeDbfloat
public float GetVolumeDb();floatGetVolumeLinearfloat
public float GetVolumeLinear();floatHasStreamPlaybackbool
public bool HasStreamPlayback();Проверяет, хранит ли плеер объекты воспроизведения, включая приостановленные. Это не признак слышимого сигнала: mute, расстояние или пауза могут давать тишину.
boolIsAutoplayEnabledbool
public bool IsAutoplayEnabled();boolIsEmissionAngleEnabledbool
public bool IsEmissionAngleEnabled();boolIsPlayingbool
public bool IsPlaying();В режиме Stream возвращает true для активно играющего голоса. На паузе false; для наличия сохранённого воспроизведения проверяйте HasStreamPlayback() или StreamPaused. Не отсекайте этим методом команду возобновления.
boolPlayvoid
public void Play(float fromPosition = 0f);Ставит звук в очередь для воспроизведения в следующем физическом кадре, начиная с указанной позиции from_position в секундах.
| Имя | Тип | По умолчанию |
|---|---|---|
fromPosition | float | 0f |
Seekvoid
public void Seek(float toPosition);Перезапускает плеер с заданной позиции в секундах только при активном воспроизведении. Останавливает прежние голоса и запускает новый с позиции. В режиме Stream на паузе или остановке ничего не делает. Для перемотки с сохранением паузы явно сохраните флаг, вызовите Stop(), Play(position) и восстановите StreamPaused.
| Имя | Тип | По умолчанию |
|---|---|---|
toPosition | float | — |
SetAreaMaskvoid
public void SetAreaMask(uint mask);| Имя | Тип | По умолчанию |
|---|---|---|
mask | uint | — |
SetAttenuationFilterCutoffHzvoid
public void SetAttenuationFilterCutoffHz(float degrees);| Имя | Тип | По умолчанию |
|---|---|---|
degrees | float | — |
SetAttenuationFilterDbvoid
public void SetAttenuationFilterDb(float db);| Имя | Тип | По умолчанию |
|---|---|---|
db | float | — |
SetAttenuationModelvoid
public void SetAttenuationModel(AudioStreamPlayer3D.AttenuationModelEnum model);| Имя | Тип | По умолчанию |
|---|---|---|
model | AudioStreamPlayer3D.AttenuationModelEnum | — |
SetAutoplayvoid
public void SetAutoplay(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetBusvoid
public void SetBus(StringName bus);| Имя | Тип | По умолчанию |
|---|---|---|
bus | StringName | — |
SetDopplerTrackingvoid
public void SetDopplerTracking(AudioStreamPlayer3D.DopplerTrackingEnum mode);| Имя | Тип | По умолчанию |
|---|---|---|
mode | AudioStreamPlayer3D.DopplerTrackingEnum | — |
SetEmissionAnglevoid
public void SetEmissionAngle(float degrees);| Имя | Тип | По умолчанию |
|---|---|---|
degrees | float | — |
SetEmissionAngleEnabledvoid
public void SetEmissionAngleEnabled(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetEmissionAngleFilterAttenuationDbvoid
public void SetEmissionAngleFilterAttenuationDb(float db);| Имя | Тип | По умолчанию |
|---|---|---|
db | float | — |
SetMaxDbvoid
public void SetMaxDb(float maxDb);| Имя | Тип | По умолчанию |
|---|---|---|
maxDb | float | — |
SetMaxDistancevoid
public void SetMaxDistance(float meters);| Имя | Тип | По умолчанию |
|---|---|---|
meters | float | — |
SetMaxPolyphonyvoid
public void SetMaxPolyphony(int maxPolyphony);| Имя | Тип | По умолчанию |
|---|---|---|
maxPolyphony | int | — |
SetPanningStrengthvoid
public void SetPanningStrength(float panningStrength);| Имя | Тип | По умолчанию |
|---|---|---|
panningStrength | float | — |
SetPitchScalevoid
public void SetPitchScale(float pitchScale);| Имя | Тип | По умолчанию |
|---|---|---|
pitchScale | float | — |
SetPlaybackTypevoid
public void SetPlaybackType(AudioServer.PlaybackType playbackType);| Имя | Тип | По умолчанию |
|---|---|---|
playbackType | AudioServer.PlaybackType | — |
SetPlayingvoid
public void SetPlaying(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetStreamvoid
public void SetStream(AudioStream stream);| Имя | Тип | По умолчанию |
|---|---|---|
stream | AudioStream | — |
SetStreamPausedvoid
public void SetStreamPaused(bool pause);| Имя | Тип | По умолчанию |
|---|---|---|
pause | bool | — |
SetUnitSizevoid
public void SetUnitSize(float unitSize);| Имя | Тип | По умолчанию |
|---|---|---|
unitSize | float | — |
SetVolumeDbvoid
public void SetVolumeDb(float volumeDb);| Имя | Тип | По умолчанию |
|---|---|---|
volumeDb | float | — |
SetVolumeLinearvoid
public void SetVolumeLinear(float volumeLinear);| Имя | Тип | По умолчанию |
|---|---|---|
volumeLinear | float | — |
Stopvoid
public void Stop();Остановка звука.
Сигналы и события1
FinishedСобытие
public event Action Finished;Выдаётся, когда при обновлении удалён один или несколько естественно завершившихся голосов. Другие голоса могут ещё играть. Stop() и вытеснение по лимиту не означают естественное завершение; цикл не выдаёт этот сигнал на каждом круге.
AudioStreamPlayer3D.AttenuationModelEnum
| Значение | Описание |
|---|---|
Disabled = 3 | Нет ослабления громкости в зависимости от расстояния. Звук все равно будет слышен позиционно, в отличие от |
InverseDistance = 0 | Ослабление громкости в зависимости от линейного расстояния. |
InverseSquareDistance = 1 | Ослабление громкости пропорционально квадрату расстояния. ВНИМАНИЕ |
Logarithmic = 2 | Ослабление громкости в зависимости от логарифмического расстояния. ВНИМАНИЕ |
AudioStreamPlayer3D.DopplerTrackingEnum
| Значение | Описание |
|---|---|
Disabled = 0 | Откл. доплеровского слежения. |
IdleStep = 1 | Выполняет доплеровское отслеживание во время кадров процесса (см. |
PhysicsStep = 2 | Выполняет доплеровское отслеживание во время физических кадров (см. |