我正在尝试创建一个 slider ,可用于 Unity 5 中的音量控制,但音量不会改变。
我的游戏对象被称为 MainMusicPlayer 用于音频源和 Volume Slider 用于 slider
我将发布整个脚本,因为这将是有益的。
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class AudioSettingsScript : MonoBehaviour
{
public const float DefaultVolumeLevel = 1f;
Slider volumeSlider;
void Start()
{
GameObject temp = GameObject.Find("Volume Slider");
if (temp != null)
{
volumeSlider = temp.GetComponent<Slider>();
if (volumeSlider != null)
{
volumeSlider.normalizedValue = PlayerPrefs.HasKey("VolumeLevel") ? PlayerPrefs.GetFloat("VolumeLevel") : DefaultVolumeLevel;
}
else
{
Debug.LogError("[" + temp.name + "] - Does not contain a Slider Component!");
}
}
else
{
Debug.LogError("Could not find an active GameObject named Volume Slider!");
}
}
public void OnApply()
{
PlayerPrefs.SetFloat("VolumeLevel", volumeSlider.normalizedValue);
}
}
代码的对齐方式统一正确,但这里不喜欢
最佳答案
Unity 中的主音量控制由 AudioListener 拥有。
您的代码正在更新 PlayerPrefs
中保存的值调用VolumeLevel
,但它实际上并没有告诉 Unity 在任何时候改变音量。要在全局范围内执行此操作(即一次针对所有声音),您可以更新 AudioListener.volume
值为 volumeSlider.normalizedValue
.默认情况下,音量设置为 1.0
,所以你只能让事情变得更安静 - 如果播放器想要比默认音量更大的音量,他们需要打开他们的扬声器。
所以,在你的 Start
读取保存值的方法,将其应用于 AudioListener.volume
以及 slider ,并将新值应用于 AudioListener.volume
在 OnApply
方法也是。
关于c# - Unity 5 音频音量 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30912790/