zoukankan      html  css  js  c++  java
  • 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);//新加一个按钮点击 回调(两个都会走,上面的先走)

  • 相关阅读:
    Alpha 冲刺 (9/10)
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    Alpha 冲刺 (5/10)
    团队现场编程实战(抽奖系统)
    Alpha 冲刺 (4/10)
    斗地主
    解方程
    货币系统
  • 原文地址:https://www.cnblogs.com/caymanlu/p/5876336.html
Copyright © 2011-2022 走看看