在 Unity 中制作音量滑块
Making volume slider in Unity
游戏开始,音乐开始播放,但是太烦人了,想静音或者调小点。像游戏一样,有设置菜单,我觉得下个场景应该不错,我想把滑块放在那里。
但是我有错误。
脚本:
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();
}
}
}
您使用 AudioSource.volume
来改变音量。当你创建一个Slider
时,你可以用Slider.value
得到滑块的value
。因此,取 Slider.value
并将其分配给 AudioSource.volume
.
要创建滑块,转到GameObject->UI->Slider。确保 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 的更多信息 UI here。
游戏开始,音乐开始播放,但是太烦人了,想静音或者调小点。像游戏一样,有设置菜单,我觉得下个场景应该不错,我想把滑块放在那里。 但是我有错误。
脚本:
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();
}
}
}
您使用 AudioSource.volume
来改变音量。当你创建一个Slider
时,你可以用Slider.value
得到滑块的value
。因此,取 Slider.value
并将其分配给 AudioSource.volume
.
要创建滑块,转到GameObject->UI->Slider。确保 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 的更多信息 UI here。