如何将 music/effects 音量值数字转换为一些合理的单位,例如 0-100?

How can I convert the music/effects volume value numbers to some reasonable units like 0-100?

我有混音器和两个 ui 滑块。 我正在使用 ui 滑块来更改 music/effects 音量。

体积工作正常,问题是在显示当前体积值时,它是以浮点单位显示的。我希望它以 0 到 100 的 int 单位显示。

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

虽然游戏是 运行 并且当我更改 slider/s 时,我在文本中显示当前音量值(在屏幕截图的层次结构中,它是 Slider 和 Slider 下的 MusicText 和 EffectsText (1))

你可以在左侧游戏视图的第二个屏幕截图中看到window当前音量值数字是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();
    }
}

如果您只是想让显示内容更具可读性和直观性,您可以将 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();
}