1. 可視化創建及事件綁定 #
1 : 通過 Hierarchy 面板創建 UI > Button
.
2 : 創建一個腳本 TestClick.cs, 定義了一個 Click 的 public 方法(一定要是public的方法).
3 : 把 腳本 TestClick.cs 掛到一個游戲對象或者Button本身上.
4 : 把掛腳本的游戲對象拖到圖中Button的畫紅圈的位置.
5 : 點擊圖中Button的畫藍圈的位置,選擇TestClick腳本,選擇Click方法.
運行,點擊按鈕.
2. 通過直接綁定腳本來綁定事件 #
1 : 建一個ButtonClickTest腳本,掛在一個游戲對象上(里面的方法public或private都可以).
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 using UnityEngine.UI; 5 6 public class ButtonClickTest : MonoBehaviour { 7 8 private GameObject buttonObj; 9 private void Start() 10 { 11 buttonObj = GameObject.Find("Button"); 12 buttonObj.GetComponent<Button>().onClick.AddListener(M); 13 buttonObj.GetComponent<Button>().onClick.AddListener(F); 14 } 15 void M() 16 { 17 print("執行了M方法!"); 18 } 19 public void F() 20 { 21 print("執行了N方法!"); 22 } 23 }
2 : 運行,點擊按鈕執行兩個方法.
buttonObj.GetComponent<Button>().onClick.AddListener(M);可以換成
buttonObj.GetComponent<Button>().onClick.AddListener
(
delegate () { M(); }
);
3. 通過 EventTrigger 實現按鈕點擊事件(一) #
1 : 創建一個ButtonClickTest 腳本, 利用 UnityEngine.EventSystems.EventTrigger 添加監聽事件.
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 using UnityEngine.UI; 5 using UnityEngine.EventSystems; 6 7 // 有了此腳本,就會自動添加 EventTrigger 腳本 8 [RequireComponent(typeof(UnityEngine.EventSystems.EventTrigger))] 9 public class ButtonClickTest : MonoBehaviour 10 { 11 12 // Use this for initialization 13 void Start() 14 { 15 Button btn = this.GetComponent<Button>(); 16 EventTrigger trigger = btn.gameObject.GetComponent<EventTrigger>(); 17 EventTrigger.Entry entry1 = new EventTrigger.Entry(); 18 EventTrigger.Entry entry2 = new EventTrigger.Entry(); 19 EventTrigger.Entry entry3 = new EventTrigger.Entry(); 20 21 // 鼠標點擊事件 22 entry1.eventID = EventTriggerType.PointerClick; 23 // 鼠標進入事件 24 entry2.eventID = EventTriggerType.PointerEnter; 25 // 鼠標滑出事件 26 entry3.eventID = EventTriggerType.PointerExit; 27 28 entry1.callback = new EventTrigger.TriggerEvent(); 29 entry1.callback.AddListener(M); 30 trigger.triggers.Add(entry1); 31 32 entry2.callback = new EventTrigger.TriggerEvent(); 33 entry2.callback.AddListener(N); 34 trigger.triggers.Add(entry2); 35 36 entry3.callback = new EventTrigger.TriggerEvent(); 37 entry3.callback.AddListener(F); 38 trigger.triggers.Add(entry3); 39 40 } 41 private void M(BaseEventData pointData) 42 { 43 Debug.Log("鼠標點擊了!"); 44 } 45 private void N(BaseEventData pointData) 46 { 47 Debug.Log("鼠標進入了!"); 48 } 49 private void F(BaseEventData pointData) 50 { 51 Debug.Log("鼠標滑出了!"); 52 } 53 }
2 :把腳本掛在Button對象上,然后Unity會給Button游戲對象再掛一個EventTrigger腳本.
3 :運行.
4. 通過 EventTrigger 實現按鈕點擊事件(二) #
1 :寫一個腳本掛在一個游戲對象,例如相機上(和按鈕關聯的事件方法要聲明為public).
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 using UnityEngine.UI; 5 using UnityEngine.EventSystems; 6 7 public class ButtonClickTest : MonoBehaviour 8 { 9 // Use this for initialization 10 void Start() 11 { 12 } 13 public void M() 14 { 15 Debug.Log("鼠標點擊了!"); 16 } 17 public void N() 18 { 19 Debug.Log("鼠標進入了!"); 20 } 21 public void F() 22 { 23 Debug.Log("鼠標滑出了!"); 24 } 25 public void K() 26 { 27 Debug.Log("鼠標按下了!"); 28 } 29 public void L() 30 { 31 Debug.Log("鼠標抬起了!"); 32 } 33 }
2 :給Button游戲對象添加EventTrigger組件.
3 :在組件里添加對應的事件,選擇對應的方法.
4 :運行,鼠標在按鈕上運動,點擊.
.