c# - 如何在 Unity 中将混音器的音量设置为 slider 的音量?

标签 c# unity3d audio uislider mixer

我正在尝试进行一些音频设置。这是我的脚本:

public AudioMixer masterMixer;
public float masterLvl;
public float musicLvl;
public float sfxLvl;

public void SetMasterVolume ()
{
    masterLvl = masterVolumeSlider.value;
    masterMixer.SetFloat("masterVol", masterLvl);
}

public void SetMusicVolume()
{
    musicLvl = musicVolumeSlider.value;
    masterMixer.SetFloat("musicVol", musicLvl);
}

public void SetSfxVolume()
{
    sfxLvl = sfxVolumeSlider.value;
    masterMixer.SetFloat("sfxVol", sfxLvl);
}

它有所有的 OnValueChanged(); slider 上的东西。我只是想知道为什么这不起作用。谢谢。

编辑:所以问题是它改变了 dB,而不是音量。新问题是:如何让它改变音量而不是 dB?

编辑 2:截图。 audiomixer screenshot

最佳答案

我认为,您的问题是混合器值 (-80db - 20db) 是对数刻度,而 slider 值是线性的。例如:半音量实际上是-10db,但是如果你把它连接到一个线性刻度,比如 slider ,那么半音量最终会是-40db!这就是为什么听起来它在那一点上基本上是沉默的。

有一个简单的方法来修复它:

  1. 不要将 slider 的最小值/最大值设置为 -80 和 20,而是将它们设置为最小值 0.0001 和最大值 1。

  2. 在设置公开参数值的脚本中,使用它来将线性值转换为衰减级别:

     masterMixer.SetFloat("musicVol", Mathf.Log10(masterLevel) * 20);
    

将最小值设置为 0.0001 很重要,否则将其一直降至零会破坏计算并再次提高音量。

帖子:

https://forum.unity.com/threads/changing-audio-mixer-group-volume-with-ui-slider.297884/

关于c# - 如何在 Unity 中将混音器的音量设置为 slider 的音量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46529147/

相关文章:

C#区间树类

C#:在什么情况下应该清空引用?

c# - Prism 中 CompositePresentationEvent<> 的多个参数

c# - 如何在Unity中的场景之间传递数据

javascript - 未捕获( promise )DOMException : The element has no supported sources

c - 通过微 Controller 实现乐器自动化教学

html - 如何在没有爆裂声和咔哒声的情况下一个接一个地播放 <audio> block ?

c# - var 关键字有什么意义?

unity3d - (Unity) 将轮廓添加到 Alpha Cutout Shader

android - Unity3D + Glass 开发套件预览