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);   };

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

    就这样。拜拜~

  • 相关阅读:
    我眼中的SCRUM
    文本转换程序
    免费接口
    看板,敏捷的另一种实现方式
    Android Asynchronous Http Client-Android异步网络请求客户端接口
    hdu4753 Fishhead’s Little Game 状态压缩,总和一定的博弈
    dbcp、c3p0、jdbc常用连接配置
    IE安全分析
    redis入侵小结
    heartbleed漏洞利用
  • 原文地址:https://www.cnblogs.com/yzxhz/p/13625796.html
Copyright © 2011-2022 走看看