Unity 6.3
0 онлайн 1 гость 3 в системе
Вход

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); } }