【问题标题】:How to set a Mixer's volume to a slider's volume in Unity?如何在 Unity 中将混音器的音量设置为滑块的音量?
【发布时间】:2018-03-13 17:44:18
【问题描述】:

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

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();滑块上的东西。我只是想知道为什么这不起作用。谢谢。

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

编辑 2:屏幕截图。

【问题讨论】:

  • 顺便说一句,我在控制台中没有任何错误。一切都已分配并正常工作。
  • 当您设置断点并进行调试时,有问题的代码会被命中吗?
  • Debug.Log 放入每个函数中,看看它们是否被调用......
  • 我确实说过。有用。此外,当我滑动 musicVolumeSlider 时,它会使音量在一个实例中增大,但不会再次减小。它根本没有改变。 (背景音乐音量)
  • 另外,我所有的滑块最大值都等于 1,即使音量也是 1,我的音量仍然会上升。

标签: c# unity3d audio uislider mixer


【解决方案1】:

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

有一个简单的方法来解决它:

  1. 不要将滑块的最小值/最大值设置为 -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/

【讨论】:

    【解决方案2】:

    这里有一个公式,在主观上听起来更接近线性音量的通常行为方式:

        private float ValueToVolume(float value, float maxVolume)
        {
            return Mathf.Log10(Mathf.Clamp(value, 0.0001f, 1f)) * (maxVolume - zeroVolume) / 4f + maxVolume;
        }
    
    • 看起来something like this

    • 例如,如果您的 AudioMixerGroup “最大”音量不是 0 而是 -20db,则可以使用 maxVolume。

    【讨论】:

      【解决方案3】:

      您必须处理 dB 来设置混音器的音量。将滑块的下限设置为 -80,上限设置为 20,它可以与混音器一起正常工作。如果您不想处理它,您可以更改音频侦听器或源的音量。

      【讨论】:

      • 谢谢。这实际上是我已经做过的。我只是想知道是否有任何方法可以做到这一点。好像没有。再次感谢。
      猜你喜欢
      • 2020-12-07
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多