unity 点击事件 点击 按钮还是屏幕

ugui做的unity2d点击事件 要判断点击的是按钮还是屏幕
2025-01-03 02:01:38
推荐回答(1个)
回答1:

当然是监听按钮 或者 你的图片啦。

方式一:比较麻烦,每个要接收点击的都要手动添加组件并设定。
给你要接收点击物体添加组件EventTrigger,设置一下返回的类和方式就行了。
--------------------------------------------------
方式二:把我写的这脚本放到你项目里
using UnityEngine;
using System.Collections;
using UnityEngine.EventSystems;
/// 
/// Author: wbq
/// 事件触发封装 - 需要什么事件可扩展
/// Event trigger listener.
/// 

public class EventTriggerListener : MonoBehaviour ,IPointerClickHandler,IPointerDownHandler,IPointerEnterHandler,IPointerExitHandler,IPointerUpHandler{
public delegate void VoidDelegate (GameObject go);
public VoidDelegate onClick;
public VoidDelegate onDown;
public VoidDelegate onEnter;
public VoidDelegate onExit;
public VoidDelegate onUp;
static public EventTriggerListener Get (GameObject go){
    EventTriggerListener listener = go.GetComponent();
    if (listener == null) listener = go.AddComponent();
        return listener;
    }
    public void OnPointerClick(PointerEventData eventData){
        if(onClick != null) onClick(gameObject);
    }
    public void OnPointerDown (PointerEventData eventData){
        if(onDown != null) onDown(gameObject);
    }
    public void OnPointerEnter (PointerEventData eventData){
        if(onEnter != null) onEnter(gameObject);
    }
    public void OnPointerExit (PointerEventData eventData){
        if(onExit != null) onExit(gameObject);
    }
    public void OnPointerUp (PointerEventData eventData){
        if(onUp != null) onUp(gameObject);
    }
}
***********************
这是一个静态类,用委托来传递你想要的事件。比如你再某个类中要监听你的 YourButton。
EventTriggerListener.Get(YourButton).onClick = onClickButtonHandler;
private void onClickButtonHandler( GameObject obj ){
    Debug.log("点击到了你的按钮");


.onClick 可以换成其他的事件,如按下、抬起、划过等。我给你写的脚本只有几个事件,需要其他的你可以自己在那个类里再扩展