如何使用滑块纠正高音量下降
Posted
技术标签:
【中文标题】如何使用滑块纠正高音量下降【英文标题】:How to correct high volume drop off using a slider 【发布时间】:2019-04-28 13:56:32 【问题描述】:这是我第一次使用音量滑块,它是 Unity3D 网站上的 3D 射击教程中提供的。滑块可以工作,但在滑块中间大约之后,音量已经几乎不可察觉。与我习惯的滑块相比,这种尺寸的滑块下降得太快了,我猜有一些三角函数可以用来使下降更平滑,但我不太熟悉他们呢。有谁知道纠正这个问题的好方法?谢谢!这是我的代码
编辑:我也发现了这个 VolumeHandler 脚本。我会放在第一个之后
using UnityEngine;
using System.Collections;
using UnityEngine.Audio;
public class MixLevels : MonoBehaviour
public AudioMixer masterMixer;
public void SetSfxLvl(float sfxLvl)
masterMixer.SetFloat("sfxVol", sfxLvl);
public void SetMusicLvl (float musicLvl)
masterMixer.SetFloat ("musicVol", musicLvl);
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class VolumeHandler : MonoBehaviour
// Use this for initialization
void Start ()
if(GameObject.Find("EffectsSlider"))
GameObject.Find("EffectsSlider").GetComponent<Slider>().onValueChanged.AddListener(SetVolume);
void SetVolume(float volume)
GetComponent<Audiosource>().volume = volume;
void OnDestroy()
if(GameObject.Find("EffectsSlider"))
GameObject.Find("EffectsSlider").GetComponent<Slider>().onValueChanged.RemoveListener(SetVolume);
【问题讨论】:
你能发布滑块的“Inspector”截图吗? 您不需要三角函数。我认为您可以通过一个简单的对数函数传递滑块的输入值。输入域应从 1 开始。您可能必须使用日志的基数。 desmos.com/calculator/osibvmz8ga 要获得音量的可听线性,该函数是一个正方形。如果 Unity 将其立方化,我不会感到惊讶。他们几乎从不以所有其他软件和界面做事的方式做事。 【参考方案1】:如果大约在滑块中间之后,音量已经几乎察觉不到,这意味着中间的值应该是滑块上的最大值。
选择滑块并将最大值更改为滑块中间的值,当音量变得几乎不可察觉时。您也可以通过具有Slider.maxValue
属性的代码执行此操作。至于平滑度,请确保未在滑块上启用“整数”。如果启用,则滑块值将是 int
而不是 float
,这可能会导致问题。
【讨论】:
以上是关于如何使用滑块纠正高音量下降的主要内容,如果未能解决你的问题,请参考以下文章