UI事件管理

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;

public class UGUIEventListener : UnityEngine.EventSystems.EventTrigger
{
    public UnityAction<GameObject> onClick;

    public override void OnPointerClick(PointerEventData eventData)
    {
        base.OnPointerClick(eventData);

        if (onClick != null)
            onClick(gameObject);
    }
    /// <summary>
    /// 獲取或添加UGUIEventListener腳本來實現對遊戲對象的監聽
    /// </summary>
    /// <param name="go"></param>
    /// <returns></returns>
    public static UGUIEventListener Get(GameObject go)
    {
        UGUIEventListener listener = go.GetComponent<UGUIEventListener>();
        if (listener == null)
            listener = go.AddComponent<UGUIEventListener>();
        return listener;
    }

}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class Script_05_07 : MonoBehaviour
{
    public Button button1;
    public Button button2;

    public Text text;
    public Image image;



    private void Awake()
    {

        button1.onClick.AddListener(delegate () { onClick(button1.gameObject); });
        button2.onClick.AddListener(delegate () { onClick(button2.gameObject); });

        UGUIEventListener.Get(text.gameObject).onClick=onClick;
        UGUIEventListener.Get(image.gameObject).onClick = onClick;

    }

    public void onClick(GameObject go)
    {
        if (go == button1.gameObject)
        {
            Debug.Log("點擊按鈕1");
        }else if (go == button2.gameObject)
        {
            Debug.Log("點擊按鈕2");
        }
        else if (go == text.gameObject)
        {
            Debug.Log("點擊文本");
        }
        else if(go==image.gameObject)
        {
            Debug.Log("點擊圖片");
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章