Unity UGUI按鈕添加點擊事件


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 :運行,鼠標在按鈕上運動,點擊.

.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM