zoukankan      html  css  js  c++  java
  • Unity自定义UI事件监听

    这个可以自定义UI元素的点击,拖拽等事件。

    核心方法:在代码里面定义一个委托,脚本继承EventTrigger搞就完了,直接代码:

    using UnityEngine;
    using UnityEngine.EventSystems;
    
    
    public class EventTriggerListener : EventTrigger
    {
        public delegate void MouseAction(GameObject go);
        public MouseAction onEnter;
        public MouseAction onExit;
        public MouseAction onClick;
    
        public static EventTriggerListener Get(GameObject go)
        {
            EventTriggerListener eventTriggerListener = go.GetComponent<EventTriggerListener>();
            if (eventTriggerListener == null)
            {
                eventTriggerListener = go.AddComponent<EventTriggerListener>();
            }
            return eventTriggerListener;
        }
    
        public override void OnPointerClick(PointerEventData eventData)
        {
            base.OnPointerClick(eventData);
            onClick?.Invoke(gameObject);
        }
        public override void OnPointerEnter(PointerEventData eventData)
        {
            base.OnPointerEnter(eventData);
            onEnter?.Invoke(gameObject);
        }
        public override void OnPointerExit(PointerEventData eventData)
        {
            base.OnPointerExit(eventData);
            onExit?.Invoke(gameObject);
        }
    }

    PS:上面代码在CS 4以下运行会报错,委托执行方式改为:

    if(onClick!=null){

      onClick(gameObject);

    调用的时候获取到物体的GameObject,直接用:

    EventTriggerListener.Get(gameObject).onClick += (go)=>{  Debug.Log(go.name);   };

    可以自由扩展,需要什么事件就在下面重写事件就好啦。

    就这样。拜拜~

  • 相关阅读:
    2019年8月20日 item系列
    变量和字符
    python命名规则
    五大常用算法之贪心算法
    过河卒
    组成三位数
    编码问题
    FatMouse' Trade
    A Boring Game
    螺旋矩阵
  • 原文地址:https://www.cnblogs.com/yzxhz/p/13625796.html
Copyright © 2011-2022 走看看