如何将 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();
}
我有混音器和两个 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();
}