首页 > 解决方案 > 我怎样才能使音量滑块统一工作?

问题描述

所以我对 Unity 还很陌生,而且我一直在制作 The Worlds Hardest Game 的仿冒版本。我制作了一个只有音量滑块的选项菜单,但我似乎无法让滑块做任何事情。我写了代码,但我不明白为什么什么也没发生。我也无法弄清楚如何在切换到另一个场景后保存滑块的数据(如主菜单)这是一些代码:

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

public class VolumeSlider : MonoBehaviour
{
    public AudioMixer mixer;



    public void SetVolumeLevel(float sliderValue)
    {
        mixer.SetFloat("musicVol", Mathf.Log10 (sliderValue));
    }
}

标签: c#unity3dvolume

解决方案


创建滑块

在层次结构中,选择 Create > UI > Slider 为您的音量控制创建一个 UI Slider

选择 Slider 对象并将 Min Value 设置为 0.0001(对数转换在零处将无法正常工作)

将值设置为 1

在此处输入图像描述

将混音器组音量公开给脚本。

使用滑块选择要控制的混音器组。

在检查器中,在衰减下,右键单击音量标签并选择将“音量(音乐)”暴露到脚本中。

在此处输入图像描述

在 Audio Mixer 面板中,选择 Exposed Parameters 下拉菜单并为现在公开的音量参数命名。例如“音乐卷”。从脚本访问时,您需要使用此处给出的参数名称。

在此处输入图像描述

用脚本连接滑块

将新的 C Sharp 脚本添加到名为 SetVolume 或类似的滑块对象。

打开它进行编辑并键入或粘贴以下脚本: 保存脚本并返回 Unity。

使用圆选择将混音器引用变量连接到包含公开参数的混音器。

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

public class SetVolume : MonoBehaviour {

    public AudioMixer mixer;

    public void SetLevel (float sliderValue)
    {
       mixer.SetFloat("MusicVol", Mathf.Log10(sliderValue) * 20);
    }
}

要阅读文章的其余部分,请参阅以下链接:

在 Unity 中制作音量滑块的正确方法(使用对数转换)


推荐阅读