【问题标题】:How can I use a ui slider to change a audio mixer volume?如何使用 ui 滑块更改混音器音量?
【发布时间】:2019-09-15 09:36:25
【问题描述】:

由于在最新的统一编辑器版本中不再有动态选项,我需要使用参数从脚本中调用函数,但不知道如何处理它。

我在画布上附加了 SettnigsMenu 脚本:

脚本:

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

public class SettingsMenu : MonoBehaviour
{
    public AudioMixer audioMixer;

    public void SetVolume(float volume)
    {
        audioMixer.SetFloat("Volume", volume);
    }

    public void SetQuality(int qualityIndex)
    {
        QualitySettings.SetQualityLevel(qualityIndex);
    }
}

然后再次在层次结构上我有一个音量滑块(UI 滑块) 我单击加号添加一个事件,然后向下拖动 Canvas,然后选择 SetVolume (float)

现在我在 On Value Changed 中还有一个值为 0 的字段参数。

但是现在我如何在我的游戏中改变音量时,它会改变音频混合器中的音量?在较旧的统一编辑器版本中,我可以为 SetVolume 选择动态浮动,但在最新的统一版本中不再存在。

SetQuality 函数也有同样的问题。

由于“动态”选项不存在,我不确定如何使脚本中的功能生效并更改编辑器中的 ui 值,例如音量混音器或下拉质量,应该会更改质量级别编辑 > 项目设置... > 质量

【问题讨论】:

  • @SagiZiv 问题是unity3d 2019.2.5f1版本中不存在动态函数。它在 2018 版本中,但不是最新版本。我安装了两个版本并检查了。

标签: c# unity3d


【解决方案1】:

在您的SettingsMenu.cs 中,您需要添加对滑块的引用并在检查器中分配它。

然后在您的 SetVolume 方法中,您需要从滑块中读取值。 然后你可以对音量做任何你喜欢的事情。

下拉菜单也是如此。添加对其的引用并从控件中提取选定的索引。

编辑:不要忘记为滑块添加正确的using

using UnityEngine.UI;

public class SettingsMenu : MonoBehaviour
{
    [SerializeField]
    private Slider _volumeSlider;

    public void SetVolume()
    {
        float volume = _volumeSlider.value;
        audioMixer.SetFloat("Volume", volume);
    }
}

【讨论】:

  • 他不需要参考滑块,在unityevent中他可以使用动态功能
  • @SagiZiv 问题是unity3d 2019.2.5f1版本中不存在动态函数。它在 2018 版本中,但不是最新版本。我安装了两个版本并检查了。
  • @DanielLip 哦,我的错……对不起
猜你喜欢
  • 2020-12-07
  • 2018-03-13
  • 1970-01-01
  • 2021-11-28
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 2015-05-28
  • 1970-01-01
相关资源
最近更新 更多