config | 要使用的新配置。 |
bool 如果能够成功应用所有设置,则为 true。
执行设备配置更改。为响应该调用,将使用参数 deviceWasChanged=false 调用 AudioSettings.OnAudioConfigurationChanged 委托。无法保证可以使用指定的确切设置,但会尝试使用系统支持的最接近的匹配设置。
using UnityEngine;
using System.Collections;
public class TestAudioConfiguration : MonoBehaviour
{
void Start()
{
AudioSettings.OnAudioConfigurationChanged += OnAudioConfigurationChanged;
}
void OnAudioConfigurationChanged(bool deviceWasChanged)
{
Debug.Log(deviceWasChanged ? "Device was changed" : "Reset was called");
if (deviceWasChanged)
{
AudioConfiguration config = AudioSettings.GetConfiguration();
config.dspBufferSize = 64;
AudioSettings.Reset(config);
}
GetComponent<AudioSource>().Play();
}
static int[] validSpeakerModes =
{
(int)AudioSpeakerMode.Mono,
(int)AudioSpeakerMode.Stereo,
(int)AudioSpeakerMode.Quad,
(int)AudioSpeakerMode.Surround,
(int)AudioSpeakerMode.Mode5point1,
(int)AudioSpeakerMode.Mode7point1
};
static int[] validDSPBufferSizes =
{
32, 64, 128, 256, 340, 480, 512, 1024, 2048, 4096, 8192
};
static int[] validSampleRates =
{
11025, 22050, 44100, 48000, 88200, 96000,
};
static int[] validNumRealVoices =
{
1, 2, 4, 8, 16, 32, 50, 64, 100, 128, 256, 512,
};
static int[] validNumVirtualVoices =
{
1, 2, 4, 8, 16, 32, 50, 64, 100, 128, 256, 512,
};
int GUIRow(string name, int[] valid, int value, ref bool modified)
{
GUILayout.BeginHorizontal();
GUILayout.Button(name + "=" + value);
for (int i = 0; i < valid.Length; i++)
{
string s = valid[i].ToString();
if (valid[i] == value)
s = "[" + s + "]";
if (GUILayout.Button(s))
{
value = valid[i];
modified = true;
}
}
GUILayout.EndHorizontal();
return value;
}
void OnGUI()
{
AudioSource source = GetComponent<AudioSource>();
bool modified = false;
AudioConfiguration config = AudioSettings.GetConfiguration();
config.speakerMode = (AudioSpeakerMode)GUIRow("speakerMode", validSpeakerModes, (int)config.speakerMode, ref modified);
config.dspBufferSize = GUIRow("dspBufferSize", validDSPBufferSizes, config.dspBufferSize, ref modified);
config.sampleRate = GUIRow("sampleRate", validSampleRates, config.sampleRate, ref modified);
config.numRealVoices = GUIRow("RealVoices", validNumRealVoices, config.numRealVoices, ref modified);
config.numVirtualVoices = GUIRow("numVirtualVoices", validNumVirtualVoices, config.numVirtualVoices, ref modified);
if (modified)
AudioSettings.Reset(config);
if (GUILayout.Button("Start"))
source.Play();
if (GUILayout.Button("Stop"))
source.Stop();
}
}