使用Unity的UGUI實(shí)現(xiàn)音樂(lè)播放的基本按鈕

將類(lèi)型為T(mén)oggle的On和Off 放在一個(gè)Toggle Group下,如圖

Toggle是一個(gè)空物體添加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>();? ? ? ??
//添加監(jiān)聽(tīng)事件,當(dāng)選中On_Toggle時(shí)調(diào)用該匿名函數(shù)
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>();? ? ? ??
//添加監(jiān)聽(tīng)事件,當(dāng)slider的值改變時(shí)調(diào)用該方法,同時(shí)改變的值也會(huì)傳給該方法
_Slider.onValueChanged.AddListener(changvalue);? ? ? ??
_Button = transform.Find("Button").GetComponent<Button>();? ? ? ??
//添加監(jiān)聽(tīng)事件,當(dāng)Button按下后調(diào)用該方法
_Button.onClick.AddListener(ButtonFun);? ? ? ??
_ButtonText = transform.Find("Button/Text").GetComponent<Text>();? ? }? ??
private void changvalue(float arg0)? ??
{
? ? ? ? _AS.volume = arg0; //使Slider可以控制當(dāng)前音量
?}? ??
private void ButtonFun()? ??
{? ? ??
?if (_AS.isPlaying)//該方法返回一個(gè)布爾值,是否正在播放,是則返回真,反之則返回假 ? ? ? ?
{? ? ? ? ? ??
_ButtonText.text = "播放";? ? ? ? ? ??
_AS.Pause(); ? ? ? ?//使音樂(lè)暫停
}? ? ? ??
else? ? ? ??
{? ? ? ? ? ??
_ButtonText.text = "暫停";? ? ? ? ? ??
_AS.Play(); ? ? ? ?//使音樂(lè)播放
}? ??
}? ??
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);
}
}