目標:
Unity3D 有很多方法可以做出Button 音效,本文要介紹的是我自己針對初學者撰寫的Script,讓設計人員可以非常簡單地 、步驟最少地,直接把這個程式綁到Button元件上面,立即可以產生 – Mouse On / Hover 以及Click 音效。
Script 內容:
//Easy Script for button sound event: Hover & Click sound by JS 2019
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections;
public class UIButtonSound : MonoBehaviour, IPointerEnterHandler
{
public AudioClip ClickedSound;
public AudioClip HoverSound;
//get button component
private Button button { get { return GetComponent<Button>(); } }
// get audiosource
private AudioSource source { get { return GetComponent<AudioSource>(); } }
void Start()
{
//bind an AudioSource on its
gameObject.AddComponent<AudioSource>();
//set default sound
source.clip = HoverSound;
source.playOnAwake = false;
button.onClick.AddListener(() => PlayClickSoud());
}
public void OnPointerEnter(PointerEventData eventData)
{
if (eventData == null)
{
throw new System.ArgumentNullException(nameof(eventData));
}
source.clip = HoverSound;
source.PlayOneShot(HoverSound);
}
void PlayClickSoud()
{
source.clip = ClickedSound;
source.PlayOneShot(ClickedSound);
}
}
使用方法:
- 先到Unity3D 新增一個 UIButtonSound.CS ,注意此處檔案名必須一樣,才能正確。
- 雙擊這個 UIButtonSound.CS ,開啟編輯器。
- 把上面我撰寫的CODE直接貼入,然後存檔。
- 點選要增加音效的Button,看右邊的檢視器,下方有Add Component。
- 點選Add Component後,可在Component搜尋列裡面,打入UI讓它自動搜尋出UI Button Sound。
- 新增後,會出現兩個外部音訊物件的變數名,Clicked Sound ;以及Hover Sound。
- 直接拖曳,想要的音效檔案。立即完成。
開發思路:
若有喜歡開發程式的人可以參考一下,此段程式碼,最核心的思路就是在一開始的時候自動綁上一個Audio Source,並透過OnPointerEnter去偵測滑鼠是否在Button上方。並觸發兩個Function,一個是撥放 Hover音效的Function,另一個則是發出Click音效的Function。
另外小提醒,在Unity3D的世界中,若有Audio Source,則需要透過Audio Listener 才能聽到聲音。也就是可以想像成,要有一個來源喇叭( Audio Source ),還要有一個耳朵( Audio Listener )才能正確地聽到想要撥放的聲音檔案。
小結:
這是一個針對初學者撰寫最容易、步驟也最少的使用方式,其他方法有很多種;例如:使用外部插件NGUI、混合使用按鈕Event中的Click()的方式等等,未來可以慢慢介紹。簡單來說,就是要能做到四個步驟,
1. 滑鼠移動到按鈕上時要能偵測的到。
2. 偵測到後,撥出聲音。
3. 直接透過Click event觸發,撥放按下按鈕的聲音。
4. 確保Audio source 與 Listener 有正確綁上按鈕元件
總之,使用本Script,只要透過簡單的拖曳,即可完成按鈕事件的基本音效設定。