如何将音乐/效果音量值转换为0-100等合理单位?

时间:2018-01-15 03:23:47

标签: c# unity3d audio unity5

我有音频混音器和两个ui滑块。 我正在使用ui滑块来改变音乐/效果音量。

卷正常工作问题是当显示当前的卷值时,它以浮动单位显示它。我希望它以0到100的整数形式显示。

在检查器的每个滑块中,我将最小值设置为0,将最大值设置为1:

sliders

当游戏正在运行时,当我更改滑块时,我会在文本中显示当前音量值(在屏幕截图的层次结构中,它是Slider and Slider(1)下的MusicText和EffectsText)

Volumes

您可以在左侧游戏视图窗口的第二个屏幕截图中看到当前音量值编号为0.8258139

如果我将滑块移到最右边,它最后会是值1,最左边会是0。 但我希望用户看到从0到100的值。我不确定,但我认为最常见的是显示0到100之间的体积单位而不是一些长浮点值。

如何将音量单位转换为0-100?

此脚本附加到层次结构中的AudioPanel,我使用musicText和effectsText显示音量值数字:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine.Audio;

public class AudioManager : MonoBehaviour
{
    public Slider musicVolume;
    public Slider effectsVolume;
    public AudioMixer audioMixer;
    public Text musicText;
    public Text effectsText;

    private void Start()
    {
        SetMusicVolume();
        SetEffectsVolume();
    }

    public void SetMusicVolume()
    {
        audioMixer.SetFloat("musicVol", Mathf.Log10(musicVolume.value <= 0 ? 0.001f : musicVolume.value) * 40f);
        musicText.text = musicVolume.value.ToString();
    }

    public void SetEffectsVolume()
    {
        audioMixer.SetFloat("effectsVol", Mathf.Log10(effectsVolume.value <= 0 ? 0.001f : effectsVolume.value) * 40f);
        effectsText.text = effectsVolume.value.ToString();
    }
}

1 个答案:

答案 0 :(得分:1)

如果您只是想让显示屏更具可读性和直观性,您可以将0.0-1.0值乘以100并将其四舍五入以删除小数位。我做这样的事情:

public void SetMusicVolume()
{
    audioMixer.SetFloat("musicVol", Mathf.Log10(musicVolume.value <= 0 ? 0.001f : musicVolume.value) * 40f);
    musicText.text = Math.Round(musicVolume.value * 100, MidpointRounding.AwayFromZero).ToString();
}