使用Unity的UGUI實現音樂播放的基本按鈕
將類型為Toggle的On和Off 放在一個Toggle Group下,如圖
Toggle是一個空物體添加Toggle Group組件
在Panel下添加組件AudioSource,將之前的音頻文件放置
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System;
public class UIControll : MonoBehaviour
?{? ?
?Toggle On_Toggle; ? ?//定義變量
Toggle Off_Toggle;? ??
Slider _Slider;? ??
Button _Button;? ?
?AudioSource _AS;? ??
Text _ButtonText;? ??
void Awake() ? ?//初始化變量
{? ? ? ??
_AS = transform.GetComponent<AudioSource>();? ? ? ?
On_Toggle = transform.Find("Group/Toggle_On").GetComponent<Toggle>();? ? ? ??
Off_Toggle = transform.Find("Group/Toggle_Off").GetComponent<Toggle>();? ? ? ??
//添加監聽事件,當選中On_Toggle時調用該匿名函數
On_Toggle.onValueChanged.AddListener(delegate(bool ison) { changeValue(ison,On_Toggle.gameObject); });?
Off_Toggle.onValueChanged.AddListener(delegate (bool ison) { changeValue(ison,Off_Toggle.gameObject); });? ? ? ??
_Slider = transform.Find("Slider").GetComponent<Slider>();? ? ? ??
//添加監聽事件,當slider的值改變時調用該方法,同時改變的值也會傳給該方法
_Slider.onValueChanged.AddListener(changvalue);? ? ? ??
_Button = transform.Find("Button").GetComponent<Button>();? ? ? ??
//添加監聽事件,當Button按下后調用該方法
_Button.onClick.AddListener(ButtonFun);? ? ? ??
_ButtonText = transform.Find("Button/Text").GetComponent<Text>();? ? }? ??
private void changvalue(float arg0)? ??
{
? ? ? ? _AS.volume = arg0; //使Slider可以控制當前音量
?}? ??
private void ButtonFun()? ??
{? ? ??
?if (_AS.isPlaying)//該方法返回一個布爾值,是否正在播放,是則返回真,反之則返回假 ? ? ? ?
{? ? ? ? ? ??
_ButtonText.text = "播放";? ? ? ? ? ??
_AS.Pause(); ? ? ? ?//使音樂暫停
}? ? ? ??
else? ? ? ??
{? ? ? ? ? ??
_ButtonText.text = "暫停";? ? ? ? ? ??
_AS.Play(); ? ? ? ?//使音樂播放
}? ??
}? ??
private void changeValue(bool ison,GameObject ToggleG)? ??
{? ? ? ??
if (ison == true)? ? ? ??
{? ? ? ? ? ??
ToggleG.gameObject.GetComponent<Toggle>().isOn = true;
switch (ToggleG.name)
{
case "Toggle_On":
_AS.Play();
_ButtonText.text = "播放";
break;
case "Toggle_Off":
_AS.Pause();
_ButtonText.text = "暫停";
break;
}
}
}
void Start () {
_ButtonText.text = "播放";
changeValue(true, Off_Toggle.gameObject);
}
}