【UGUI】Unity4.6 UI按鈕綁定事件(三)

我們會發現Unity4.6 UI新的UI系統中Button默認只提供了Onclick的調用方法,有時我們不僅僅想監聽Button的Click事件,同時還需要監聽MouseIn(鼠標進入事件)MouseOut(鼠標滑出事件).
這時我們就需要藉助新的UI系統中EventTrigger腳本來實現,下面我們來學習一下,首先我們看一下如何通過EventTrigger來實現按鈕點擊Click事件.

第一步:通過Hierarchy面板創建button(詳細參考Unity4.6 UI按鈕綁定事件(一))

第二步:創建一個名爲EventHandler的腳本,代碼如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
 
//需要EventTrigger腳本的支援
[RequireComponent(typeof(UnityEngine.EventSystems.EventTrigger))]
public class EventHandler : MonoBehaviour
{
 
// Use this for initialization
void Start()
{
 
Button btn = this.GetComponent<Button>();
UnityEngine.EventSystems.EventTrigger trigger = btn.gameObject.GetComponent<UnityEngine.EventSystems.EventTrigger>();
EventTrigger.Entry entry = new EventTrigger.Entry();
entry.eventID = EventTriggerType.PointerClick;
entry.callback = new EventTrigger.TriggerEvent();
entry.callback.AddListener(Onclick);
 
trigger.delegates.Add(entry);
}
 
private void Onclick(BaseEventData pointData)
{
Debug.Log("Button Clicked");
 
}
 
}

第三步,綁定EventHandler腳本到Button上

然後運行點擊按鈕就能看到運行的結果了。

如果我們想在Unity4.6 新的UI中實現MouseIn怎麼辦,很簡單我們只需要修改下EventTriggerType.PointerClick事件類型改爲EventTriggerType.PointerEnter,同理要監聽MouseOut事件只需要修改爲EventTriggerType.PointerExit

新的實現代碼如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.EventSystems;
 
//需要EventTrigger腳本的支援
[RequireComponent(typeof(UnityEngine.EventSystems.EventTrigger))]
public class EventHandler : MonoBehaviour
{
 
// Use this for initialization
void Start()
{
 
Button btn = this.GetComponent<Button>();
UnityEngine.EventSystems.EventTrigger trigger = btn.gameObject.GetComponent<UnityEngine.EventSystems.EventTrigger>();
EventTrigger.Entry entry = new EventTrigger.Entry();
//鼠標點擊事件
//entry.eventID = EventTriggerType.PointerClick;
//鼠標滑出事件
//entry.eventID = EventTriggerType.PointerExit;
//鼠標進入事件
entry.eventID = EventTriggerType.PointerEnter;
entry.callback = new EventTrigger.TriggerEvent();
entry.callback.AddListener(OnMouseEnter);
 
trigger.delegates.Add(entry);
}
 
private void OnMouseEnter(BaseEventData pointData)
{
Debug.Log("Button Enter");
 
}
 
}
發佈了6 篇原創文章 · 獲贊 11 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章