Unity改变输出AudioMixerGroup

bul*_*ter 1 c# unity-game-engine

我想更改 AudioSources 音量,并且想通过更改 AudioMixerGroup 来实现。

我正在尝试通过脚本将 AudioSources 的 AudioMixerGroup 更改为新的,并通过以下方式加载它:

audioSource.outputAudioMixerGroup = Resources.Load("Resources/AudioMixerWithSound") ; //Here it can convert an object to explicit AudioMixerGroup.
//audioSource.AudioMixerGroup = Resources.Load("AudioMixer/AudioMixerGroup") as AudioMixerGroup; // Here AudioMixerGroup doesn't exist.
Run Code Online (Sandbox Code Playgroud)

那么如何更改AudioSource的outputAudioMixeGroup呢?

Pro*_*mer 5

实际上没有名为 的 Unity 资源AudioMixerGroup。请注意,您可以创建的唯一音频混合资源是AudioMixer转到Assets --> Create --> AudioMixer。如果这就是您创建混音器的方式,则要加载的资源文件类型不是AudioMixerAudioMixerGroup扩展名应该是“.mixer”

请注意,您不要在函数中包含资源文件夹名称Resources.Load。如果要加载的“AudioMixerWithSound”文件是 Resources 文件夹,您将使用Resources.Load("AudioMixerWithSound")加载它而不是Resources.Load("Resources/AudioMixerWithSound"). 此外,不包括扩展名“.mixer” 。

AudioMixer从资源文件夹加载文件:

//Get the AudioSource
AudioSource audioSource = GetComponent<AudioSource>();

//Load AudioMixer
AudioMixer audioMixer = Resources.Load<AudioMixer>("AudioMixerWithSound");

//Find AudioMixerGroup you want to load
AudioMixerGroup[] audioMixGroup = audioMixer.FindMatchingGroups("Master");

//Assign the AudioMixerGroup to AudioSource (Use first index)
audioSource.outputAudioMixerGroup = audioMixGroup[0];
Run Code Online (Sandbox Code Playgroud)

AudioMixerGroup请注意,在使用 找到 的地方FindMatchingGroups("Master"),如果它是子对象,则可以/像使用该GameObject.Find函数一样访问子对象。例如,FindMatchingGroups("Master/child")。请参阅文档以获取更多信息。