c# - 我怎样才能使音量滑块统一工作?
问题描述
所以我对 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));
}
}
解决方案
创建滑块
在层次结构中,选择 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);
}
}
要阅读文章的其余部分,请参阅以下链接:
推荐阅读
- python-3.x - 如何在不计算文本格式的情况下获取字符串的长度
- docker - 如何允许 DHCP 服务器始终为 docker 容器分配相同的 IP 地址
- react-native - 像 Lime 和 Uber 这样的公司使用哪种地理定位服务可以如此准确地了解我的位置?
- java - 没有字符串参数构造函数/工厂方法
- python - 如何检查 tableau online 中的仪表板是否使用 tableau api 刷新
- python - 格式化字典Python中多个numpy数组的打印语句
- c++ - 在范围内找不到 C++ TEST_CASE
- java - 在 while 循环结束后 TextView 更新
- c++ - bison 和 avr-g++ 中双倍幂的精度
- arrays - 在c中的冒泡排序中获得不同的输出