Unity 5音量滑块

时间:2015-06-18 10:24:34

标签: c# audio unity3d

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

My Game Objects被称为音频源的MainMusicPlayer和滑块的Volume 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);
    }
}

代码的对齐在统一中是正确的,但它不喜欢它

1 个答案:

答案 0 :(得分:1)

Unity中的主音量控件归AudioListener

所有

您的代码正在更新名为PlayerPrefs的{​​{1}}中保存的值,但它实际上并未告诉Unity随时更改音量。要全局执行此操作(即一次性处理所有声音),您可以使用VolumeLevel的值更新AudioListener.volume。默认情况下,音量设置为volumeSlider.normalizedValue,因此您只能让事情变得更安静 - 如果播放器需要的音量超过默认音量,他们就需要将扬声器调高。

因此,在您阅读已保存值的1.0方法中,将其应用于Start以及滑块,并将新值应用于AudioListener.volume AudioListener.volume 1}}方法。