AudioSettings.OnAudioConfigurationChanged
Параметры
| Параметр | Описание |
|---|---|
| значение | Этот параметр верен, если пользователь изменяет устройство аудиовывода во время выполнения. |
Описание
Unity вызывает это событие каждый раз, когда изменяются глобальные настройки аудио.
Настройки изменяются при использовании AudioSettings.Reset, но внешние факторы также могут изменить их. Например:
- Панель управления OS изменяет частоту дискретизации.
- Пользователь изменяет выходное устройство по умолчанию, например, если он подключил монитор HDMI или гарнитуру USB.
Для примера кода с большим набором параметров настройки, см. AudioSettings.Reset.
// This script creates a row of buttons, one for each AudioSpeakerMode. // When you press one of the buttons, Unity will play the audio with the new speaker mode. // Attach this script and an AudioSource component (with an audio clip) to a GameObject in your Scene. // If any of the options are not available on your system, it will throw an error.
using UnityEngine; using System;
public class AudioConfigurationChangedExample : MonoBehaviour { void OnEnable() { AudioSettings.OnAudioConfigurationChanged += OnAudioConfigurationChanged; }
void OnDisable() { AudioSettings.OnAudioConfigurationChanged -= OnAudioConfigurationChanged; }
void OnAudioConfigurationChanged(bool deviceWasChanged) { Debug.Log(deviceWasChanged ? "Device was changed" : "Reset was called"); if (deviceWasChanged) { AudioConfiguration config = AudioSettings.GetConfiguration(); config.dspBufferSize = 512; if (!AudioSettings.Reset(config)) { Debug.LogError("Failed to reset AudioConfiguration after device change."); } } GetComponent<AudioSource>().Play(); }
AudioSpeakerMode GUIRow(AudioSpeakerMode value, ref bool modified) { // Add all the values in the enum to an array. Array audioSpeakerModes = Enum.GetValues(typeof(AudioSpeakerMode));
GUILayout.BeginHorizontal(); GUILayout.Button("Speaker mode = " + value.ToString());
// Loop through the AudioSpeakerMode enum. foreach (AudioSpeakerMode speakerMode in audioSpeakerModes) { // Set the button name to the name of the enum value. string s = speakerMode.ToString();
// Add brackets to the button name to show the current selected button. if (speakerMode == value) s = "[" + s + "]";
// Create a button for each valid speaker mode. if (GUILayout.Button(s)) { value = speakerMode; modified = true; } }
GUILayout.EndHorizontal(); return value; }
void OnGUI() { bool modified = false;
AudioConfiguration config = AudioSettings.GetConfiguration();
config.speakerMode = GUIRow(config.speakerMode, ref modified);
if (modified) AudioSettings.Reset(config); } }