UGUI事件系統


UGUI系統 將UI可能觸發的事件分為12個類型,即EventTriggerType枚舉的12個值。

PointerEnter--

PointerExit--

PointerDown--

PointerUp--

PointerClick--

Drag--

Drop--

Scroll--

UpdateSelected--

Select--

Deselect--

Move--

 

方式一:繼承基礎接口實現

1.創建CllickObject腳本。繼承MonoBehaviour和IPointerClickHandle(using UnityEngine.EventSystems;)

2.實現public void OnPointerClick(PointerEventData eventData)方法

3.創建一個名為Panel_IPointer的空對象,且將ClickObject腳本附加到對象上

4.啟動,並點擊Panel_IPointer對象

 

方式二:U3D編輯器操作設置實現

1:創建一個C#腳本。在腳本中添加一個public方法。

2:創建一個命名為Empty的UI對象,用於接收和響應點擊事件。創建一個名為Panel的UI對象,用於觸發點擊事件。

3:Panel對象添加EventTrigger組件," Add New" -> 選擇" PointerClick"。將Empty對象拖拽到觸發者位置。然后點擊"No Function"選擇我們寫在Test腳本中的OnTestClick事件。

4:設置好這些之后。我們的事件觸發就已經完成了。運行Unity3D。點擊窗口中Panel對象。

 

方式三:程序動態設置實現

我們在日常的開發中。可能需要動態的需要變更綁定的事件。那么我們如何才能使用C#代碼控制綁定觸發事件呢?

下面我們就介紹代碼控制。ScriptControl.cs腳本

 1 public class ScriptControl : MonoBehaviour {  
 2    
 3     // Use this for initialization  
 4     void Start ()  
 5     {  
 6         var trigger = transform.gameObject.GetComponent(); 
 7         if (trigger == null)  
 8             trigger = transform.gameObject.AddComponent(); 
 9    
10         // 實例化delegates  
11         trigger.delegates = new List(); 
12    
13         // 定義需要綁定的事件類型。並設置回調函數  
14         EventTrigger.Entry entry = new EventTrigger.Entry();  
15         // 設置 事件類型  
16         entry.eventID = EventTriggerType.PointerClick;  
17         // 設置回調函數  
18         entry.callback = new EventTrigger.TriggerEvent();  
19         UnityActioncallback =new UnityAction(OnScriptControll); 
20         entry.callback.AddListener(callback);  
21         // 添加事件觸發記錄到GameObject的事件觸發組件  
22         trigger.delegates.Add(entry);  
23     }  
24        
25     // Update is called once per frame  
26     void Update () {  
27        
28     }  
29    
30     public void OnScriptControll(BaseEventData arg0)  
31     {  
32         Debug.Log("Test Click");  
33     }  
34    
35 }  

方式四:點擊事件的特殊實現方式:使用Button控件實現

針對Click事件還存在一種特殊方式:uGUI系統中官方提供了一種Button控件。Button封裝了官方提供的一套OnClick事件。操作完全類似於方式二。便不詳述了。

使用Button我們可以實現動態的變更鼠標綁定的點擊事件。如下代碼所示:

 1 using UnityEngine;  
 2 using System.Collections;  
 3 using UnityEngine.UI;  
 4    
 5 public class BtnControl : MonoBehaviour {  
 6    
 7     // Use this for initialization  
 8     void Start ()  
 9     {  
10         var button = transform.GetComponent<Button>();  
11         if (button != null)  
12         {  
13             button.onClick.RemoveAllListeners();  
14             button.onClick.AddListener(TestClick);//添加事件  
15         }  
16     }  
17    
18     public void TestClick()  
19     {  
20         Debug.Log("Test Click. This is Type 4");  
21     }  
22        
23     // Update is called once per frame  
24     void Update () {  
25            
26     }  
27 }  

 注意:

1.給按鈕增加事件:

button.onClick.RemoveAllListeners();  //移除所有注冊事件
button.onClick.AddListener(TestClick);//注冊一個按鈕點擊 回調
button.onClick.AddListener(TestClick2);//新加一個按鈕點擊 回調(兩個都會走,上面的先走)


免責聲明!

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



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