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