zoukankan      html  css  js  c++  java
  • [UGUI]EventTrigger

    参考链接:

    https://blog.csdn.net/lyh916/article/details/44570503

    https://blog.csdn.net/qq_38451208/article/details/77979673

    代码如下:

      1 using UnityEngine;
      2 using UnityEngine.EventSystems;
      3 
      4 public class EventTriggerListener : EventTrigger
      5 {
      6     #region 变量
      7     public delegate void VoidDelegate();
      8     public delegate void PointerEventDelegate(PointerEventData eventData);
      9     public delegate void BaseEventDelegate(BaseEventData eventData);
     10     public delegate void AxisEventDelegate(AxisEventData eventData);
     11 
     12     //不带参
     13     public event VoidDelegate onPointerEnter;
     14     public event VoidDelegate onPointerExit;
     15     public event VoidDelegate onPointerDown;
     16     public event VoidDelegate onPointerUp;
     17     public event VoidDelegate onPointerClick;
     18     public event VoidDelegate onInitializePotentialDrag;
     19     public event VoidDelegate onBeginDrag;
     20     public event VoidDelegate onDrag;
     21     public event VoidDelegate onEndDrag;
     22     public event VoidDelegate onDrop;
     23     public event VoidDelegate onScroll;
     24     public event VoidDelegate onUpdateSelected;
     25     public event VoidDelegate onSelect;
     26     public event VoidDelegate onDeselect;
     27     public event VoidDelegate onMove;
     28     public event VoidDelegate onSubmit;
     29     public event VoidDelegate onCancel;
     30 
     31     //带参
     32     public event PointerEventDelegate onPointerEnterPara;
     33     public event PointerEventDelegate onPointerExitPara;
     34     public event PointerEventDelegate onPointerDownPara;
     35     public event PointerEventDelegate onPointerUpPara;
     36     public event PointerEventDelegate onPointerClickPara;
     37     public event PointerEventDelegate onInitializePotentialDragPara;
     38     public event PointerEventDelegate onBeginDragPara;
     39     public event PointerEventDelegate onDragPara;
     40     public event PointerEventDelegate onEndDragPara;
     41     public event PointerEventDelegate onDropPara;
     42     public event PointerEventDelegate onScrollPara;
     43     public event BaseEventDelegate onUpdateSelectedPara;
     44     public event BaseEventDelegate onSelectPara;
     45     public event BaseEventDelegate onDeselectPara;
     46     public event AxisEventDelegate onMovePara;
     47     public event BaseEventDelegate onSubmitPara;
     48     public event BaseEventDelegate onCancelPara;
     49     #endregion
     50 
     51     public static EventTriggerListener Get(GameObject go)
     52     {
     53         EventTriggerListener listener = go.GetComponent<EventTriggerListener>();
     54         if (listener == null)
     55         {
     56             listener = go.AddComponent<EventTriggerListener>();
     57         }
     58         return listener;
     59     }
     60 
     61     public static void Remove(GameObject go)
     62     {
     63         EventTriggerListener listener = go.GetComponent<EventTriggerListener>();
     64         if (listener != null)
     65         {
     66             Destroy(listener);
     67         }
     68     }
     69 
     70     #region 方法
     71     public override void OnPointerEnter(PointerEventData eventData)
     72     {
     73         //Debug.LogWarning("OnPointerEnter");
     74         
     75         if (onPointerEnter != null)
     76         {
     77             onPointerEnter();
     78         }
     79 
     80         if (onPointerEnterPara != null)
     81         {
     82             onPointerEnterPara(eventData);
     83         }
     84     }
     85 
     86     public override void OnPointerExit(PointerEventData eventData)
     87     {
     88         //Debug.LogWarning("OnPointerExit");
     89 
     90         if (onPointerExit != null)
     91         {
     92             onPointerExit();
     93         }
     94 
     95         if (onPointerExitPara != null)
     96         {
     97             onPointerExitPara(eventData);
     98         }
     99     }
    100 
    101     public override void OnPointerDown(PointerEventData eventData)
    102     {
    103         //Debug.LogWarning("OnPointerDown");
    104 
    105         if (onPointerDown != null)
    106         {
    107             onPointerDown();
    108         }
    109 
    110         if (onPointerDownPara != null)
    111         {
    112             onPointerDownPara(eventData);
    113         }
    114     }
    115 
    116     public override void OnPointerUp(PointerEventData eventData)
    117     {
    118         //Debug.LogWarning("OnPointerUp");
    119 
    120         if (onPointerUp != null)
    121         {
    122             onPointerUp();
    123         }
    124 
    125         if (onPointerUpPara != null)
    126         {
    127             onPointerUpPara(eventData);
    128         }
    129     }
    130 
    131     public override void OnPointerClick(PointerEventData eventData)
    132     {
    133         //Debug.LogWarning("OnPointerClick");
    134 
    135         if (onPointerClick != null)
    136         {
    137             onPointerClick();
    138         }
    139 
    140         if (onPointerClickPara != null)
    141         {
    142             onPointerClickPara(eventData);
    143         }
    144     }
    145 
    146     public override void OnInitializePotentialDrag(PointerEventData eventData)
    147     {
    148         //Debug.LogWarning("OnInitializePotentialDrag");
    149 
    150         if (onInitializePotentialDrag != null)
    151         {
    152             onInitializePotentialDrag();
    153         }
    154 
    155         if (onInitializePotentialDragPara != null)
    156         {
    157             onInitializePotentialDragPara(eventData);
    158         }
    159     }
    160 
    161     public override void OnBeginDrag(PointerEventData eventData)
    162     {
    163         //Debug.LogWarning("OnBeginDrag");
    164 
    165         if (onBeginDrag != null)
    166         {
    167             onBeginDrag();
    168         }
    169 
    170         if (onBeginDragPara != null)
    171         {
    172             onBeginDragPara(eventData);
    173         }
    174     }
    175 
    176     public override void OnDrag(PointerEventData eventData)
    177     {
    178         //Debug.LogWarning("OnDrag");
    179 
    180         if (onDrag != null)
    181         {
    182             onDrag();
    183         }
    184 
    185         if (onDragPara != null)
    186         {
    187             onDragPara(eventData);
    188         }
    189     }
    190 
    191     public override void OnEndDrag(PointerEventData eventData)
    192     {
    193         //Debug.LogWarning("OnEndDrag");
    194 
    195         if (onEndDrag != null)
    196         {
    197             onEndDrag();
    198         }
    199 
    200         if (onEndDragPara != null)
    201         {
    202             onEndDragPara(eventData);
    203         }
    204     }
    205 
    206     public override void OnDrop(PointerEventData eventData)
    207     {
    208         //Debug.LogWarning("OnDrop");
    209 
    210         if (onDrop != null)
    211         {
    212             onDrop();
    213         }
    214 
    215         if (onDropPara != null)
    216         {
    217             onDropPara(eventData);
    218         }
    219     }
    220 
    221     public override void OnScroll(PointerEventData eventData)
    222     {
    223         //Debug.LogWarning("OnScroll");
    224 
    225         if (onScroll != null)
    226         {
    227             onScroll();
    228         }
    229 
    230         if (onScrollPara != null)
    231         {
    232             onScrollPara(eventData);
    233         }
    234     }
    235 
    236     public override void OnUpdateSelected(BaseEventData eventData)
    237     {
    238         //Debug.LogWarning("OnUpdateSelected");
    239 
    240         if (onUpdateSelected != null)
    241         {
    242             onUpdateSelected();
    243         }
    244 
    245         if (onUpdateSelectedPara != null)
    246         {
    247             onUpdateSelectedPara(eventData);
    248         }
    249     }
    250 
    251     public override void OnSelect(BaseEventData eventData)
    252     {
    253         //Debug.LogWarning("OnSelect");
    254 
    255         if (onSelect != null)
    256         {
    257             onSelect();
    258         }
    259 
    260         if (onSelectPara != null)
    261         {
    262             onSelectPara(eventData);
    263         }
    264     }
    265 
    266     public override void OnDeselect(BaseEventData eventData)
    267     {
    268         //Debug.LogWarning("OnDeselect");
    269 
    270         if (onDeselect != null)
    271         {
    272             onDeselect();
    273         }
    274 
    275         if (onDeselectPara != null)
    276         {
    277             onDeselectPara(eventData);
    278         }
    279     }
    280 
    281     public override void OnMove(AxisEventData eventData)
    282     {
    283         //Debug.LogWarning("OnMove");
    284 
    285         if (onMove != null)
    286         {
    287             onMove();
    288         }
    289 
    290         if (onMovePara != null)
    291         {
    292             onMovePara(eventData);
    293         }
    294     }
    295 
    296     public override void OnSubmit(BaseEventData eventData)
    297     {
    298         //Debug.LogWarning("OnSubmit");
    299 
    300         if (onSubmit != null)
    301         {
    302             onSubmit();
    303         }
    304 
    305         if (onSubmitPara != null)
    306         {
    307             onSubmitPara(eventData);
    308         }
    309     }
    310 
    311     public override void OnCancel(BaseEventData eventData)
    312     {
    313         //Debug.LogWarning("OnCancel");
    314 
    315         if (onCancel != null)
    316         {
    317             onCancel();
    318         }
    319 
    320         if (onCancelPara != null)
    321         {
    322             onCancelPara(eventData);
    323         }
    324     }
    325     #endregion
    326 }

    测试:

     1 using UnityEngine;
     2 
     3 public class TestEventTriggerListener : MonoBehaviour
     4 {
     5     public GameObject image;
     6 
     7     void Start()
     8     {
     9         EventTriggerListener.Get(image).onPointerClick += Click;
    10     }
    11 
    12     public void Click()
    13     {
    14         Debug.Log("Click!");
    15     }
    16 }

    注意事项:

    一.点击

    1.点击事件执行顺序:OnPointerDown->OnPointerUp->OnPointerClick

    2.OnPointerDown:指针在目标范围内按下时触发

    3.OnPointerUp:指针抬起时触发,即使不在目标范围内,也会触发

    4.OnPointerClick:指针对目标完成一次点击(按下并抬起)时触发,如果指针抬起时不在目标范围内,则不会触发

    二.拖拽

  • 相关阅读:
    JS时钟--星期 年 月 日 时 分
    [考试反思]0825NOIP模拟测试30:没落
    [考试反思]0822NOIP模拟测试29:延续
    [考试反思]0821NOIP模拟测试28:沉默
    小奇的仓库:换根dp
    短期Flag
    [考试反思]0820NOIP模拟测试27:幻影
    [考试反思]0819NOIP模拟测试26:荒芜
    0818NOIP模拟测试25——B卷简记
    [模板]tarjan——最后通牒
  • 原文地址:https://www.cnblogs.com/lyh916/p/11974053.html
Copyright © 2011-2022 走看看