unity3d 如何检测在UI元素上单击的鼠标

wj8zmpe1  于 2023-02-05  发布在  其他
关注(0)|答案(2)|浏览(170)

我试图在我的游戏中做一个工具栏系统,但我找不到一种方法来检测鼠标点击一个用户界面元素只或检测,如果它超过了它,常规的检测系统是不工作。
我试过:

void OnMouseDown()
{
    Debug.Log(“yay”);
}

但消息不会被记录。

g2ieeal7

g2ieeal71#

可以在UI元素上使用EventSystems接口:

以您的情况为例:

public class test : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler
{
    public void OnPointerClick(PointerEventData eventData)
    {
        Debug.Log("Click");
    }

    public void OnPointerEnter(PointerEventData eventData)
    {
        Debug.Log("Enter");
    }

    public void OnPointerExit(PointerEventData eventData)
    {
        Debug.Log("Exit");
    }
}

确保场景具有EventSystem以使其正常工作。

fzwojiic

fzwojiic2#

IsPointOverGameObject
界面可以通过上面链接中的方法来区分,可以像下面这样使用。

private void Update()
{

    if (Input.GetMouseButtonDown(0))
    {
        if (EventSystem.current.IsPointerOverGameObject())
        {
            Debug.Log("Clicked UI");
        }
        else
        {
            Debug.Log("Clicked Not UI");
        }
    }
}

相关问题