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

 

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

 

就这样。拜拜~

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM