Unity 5 音频音量滑块



我正在尝试创建一个滑块,可用于Unity 5中的音量控制,但音量不会改变。

我的游戏对象称为音频源的 MainMusicPlayer,滑块称为音量滑块

我将发布整个脚本,因为它将是有益的。

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 所有

您的代码正在更新名为 VolumeLevelPlayerPrefs保存值,但它实际上并没有告诉 Unity 在任何时候更改音量。要全局执行此操作(即一次对所有声音),您可以使用 volumeSlider.normalizedValue 的值更新AudioListener.volume。默认情况下,音量设置为 1.0 ,因此您只能使事情更安静 - 如果玩家想要比默认值更大的音量,他们需要调高扬声器。

因此,在读取保存值的Start方法中,将其应用于AudioListener.volume和滑块,并将新值也应用于OnApply方法中的AudioListener.volume

最新更新