有没有办法让Unity中的所有音频剪辑具有相同的音量?我能找到的唯一方法是直接从代码中更改 AudioSource 的音量,但是还有其他方法吗?
最佳答案
您可能正在寻找 Audio Mixer API 。它允许您将每个音频源分配给不同的“音频混合器组”,您可以使用它来更改该组中所有音频源的参数(音量,在您的情况下)。
创建新的音频混合器资源。
右键单击>创建>音频混合器
。双击新创建的资源,打开音频混合器窗口。
通过点击“群组”右侧的 +(位于左侧面板)来创建新群组。通过制作“音乐”和“音效”音频混合器组来实现单独的“音乐”和“音效”音频级别。
单击新组,右键单击检查器中的“Volume”文本,然后单击“将...暴露给脚本”。这将允许您通过代码更改音量参数。
返回音频混合器窗口,展开右上角的“公开参数”下拉列表。
将参数从“MyExposedParameter”重命名为合理的名称,例如“MusicVolume”或“SfxVolume”(通过双击)。
在代码中,当您想要更改音频级别时,请创建一个引用初始 AudioMixer 资源的变量。然后,您可以使用mixer.SetFloat(parameter, value)。例如:
using UnityEngine;
using UnityEngine.Audio; //required import for AudioMixer
public class AudioChanger : MonoBehaviour {
[SerializeField] AudioMixer mixer;
public void SetMusicVolume(float value) {
SetVolume("MusicVolume", value);
}
public void SetSfxVolume(float value) {
SetVolume("SfxVolume", value);
}
private void SetVolume(string parameter, float value) {
mixer.SetFloat(parameter, value);
}
}
- 转到您的音频源,然后选择要路由的正确
输出
。您仍然可以使用“音量” slider ,它只会进一步降低音量。
关于unity-game-engine - Unity 中的音频音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73405276/