在Unity中制作音量滑块

时间:2016-06-12 11:33:15

标签: c# unity3d slider 2d

游戏开始,音乐开始播放,但它太烦人,想要静音或只是让它更安静。就像游戏一样,有设置菜单,我认为在下一个场景中会很好,我想放置滑块。 但是我遇到了错误。

脚本:

using UnityEngine;
using System.Collections;

public class Music : MonoBehaviour
{
    void Awake()
    {
        DontDestroyOnLoad(transform.gameObject);
    }

    public AudioClip[] soundtrack;

    // Use this for initialization
    void Start()
    {
        if (!GetComponent<AudioSource>().playOnAwake)
        {
            GetComponent<AudioSource>().clip = soundtrack[Random.Range(0, soundtrack.Length)];
            GetComponent<AudioSource>().Play();
        }
    }

// Update is called once per frame
    void Update()
    {
        if (!GetComponent<AudioSource>().isPlaying)
        {
            GetComponent<AudioSource>().clip = soundtrack[Random.Range(0, soundtrack.Length)];
            GetComponent<AudioSource>().Play();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您使用AudioSource.volume更改音量。创建Slider时,您可以使用value获取滑块的Slider.value。因此,请Slider.value并将其分配给AudioSource.volume

要创建s Slider,请转到 GameObject - &gt; UI - &gt; 滑块。确保Min Value 0 Max Value 1 。还要确保未选中Whole Numbers复选框。从编辑器中将Slider拖到此脚本中的卷Slider插槽。

注意

如果您要多次使用某个组件,请将其缓存到全局变量,而不是多次执行GetComponent<AudioSource>()或在Update()函数中使用它。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class Music : MonoBehaviour
{
    public AudioClip[] soundtrack;
    public Slider volumeSlider;

    AudioSource audioSource;


    void Awake()
    {
        DontDestroyOnLoad(transform.gameObject);
    }

    // Use this for initialization
    void Start()
    {
        audioSource = GetComponent<AudioSource>();

        if (!audioSource.playOnAwake)
        {
            audioSource.clip = soundtrack[Random.Range(0, soundtrack.Length)];
            audioSource.Play();
        }
    }

    // Update is called once per frame
    void Update()
    {
        if (!audioSource.isPlaying)
        {
            audioSource.clip = soundtrack[Random.Range(0, soundtrack.Length)];
            audioSource.Play();
        }
    }

    void OnEnable()
    {
        //Register Slider Events
        volumeSlider.onValueChanged.AddListener(delegate { changeVolume(volumeSlider.value); });
    }

    //Called when Slider is moved
    void changeVolume(float sliderValue)
    {
        audioSource.volume = sliderValue;
    }

    void OnDisable()
    {
        //Un-Register Slider Events
        volumeSlider.onValueChanged.RemoveAllListeners();
    }
}

您可以详细了解Unity的用户界面here