在這篇內容中有提到過按鈕的製作,後來發現Unity有提供EventSystems的介面,就來介紹一下,下圖的結果點我。
首先新增GameObject->UI->Button物件,接著在Button物件下新增處理事件的Script,這裡我命名為ButtonTest.cs。
到這裡事前準備就算完成,接著來看Script的內容:
using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.EventSystems; public class ButtonTest : MonoBehaviour ,IPointerClickHandler////(1) ,IPointerEnterHandler ,IPointerExitHandler ,IPointerDownHandler ,IPointerUpHandler ,IEventSystemHandler{ public void OnPointerClick(PointerEventData eventData){ Debug.Log("Click"); } public void OnPointerEnter(PointerEventData eventData){ Debug.Log("Enter"); } public void OnPointerExit(PointerEventData eventData){ Debug.Log("Exit"); } public void OnPointerDown(PointerEventData eventData){ Debug.Log("Down"); } public void OnPointerUp(PointerEventData eventData){ Debug.Log("Up"); } }(1)這裡實作有關Button事件的介面,使用逗號接在MonoBehaviour之後就好,依序是:
IPointerClickHandler - OnPointerClick 點擊。
IPointerEnterHandler - OnPointerEnter 進入。
IPointerExitHandler - OnPointerExit 離開。
IPointerDownHandler - OnPointerDown 按下。
IEventSystemHandler - OnPointerUp 彈起。
再增加一個布林變數做判斷:
using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.EventSystems; public class ButtonTest : MonoBehaviour ,IPointerExitHandler ,IPointerDownHandler ,IPointerUpHandler ,IEventSystemHandler{ private bool DownState = false; public void OnPointerExit(PointerEventData eventData){ Debug.Log("Exit"); DownState = false; } public void OnPointerDown(PointerEventData eventData){ Debug.Log("Down"); DownState = true; } public void OnPointerUp(PointerEventData eventData){ Debug.Log("Up"); DownState = false; } private float timer = 0; void Update(){ if (DownState) timer += Time.deltaTime; else timer = 0; } }按鈕長按的狀態就可以做出來,這次就到這裡。
沒有留言:
張貼留言