UGUI學(xué)習(xí) Toggle、Slider、Button監(jiān)聽(tīng) 實(shí)現(xiàn)音樂(lè)播放的基本按鈕

使用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);

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容