检查是否在特定的UI元素上单击了鼠标

本文关键字:元素 单击 鼠标 UI 是否 检查 | 更新日期: 2023-09-27 17:54:58

EventSystem.current.IsPointerOverGameObject()检查鼠标是否被点击在任何UI元素上。如何检查鼠标是否被点击在特定的 UI元素上(2或3个按钮)?我想使用标签,并继续使用EventSystem.current.IsPointerOverGameObject() !

检查是否在特定的UI元素上单击了鼠标

您不使用EventSystem.current.IsPointerOverGameObject()读取按钮点击。

在OnEnable()函数中使用Button.onClick.AddListener(() => callbackfunctionName());注册Button事件。

然后使用Button.onClick.RemoveAllListeners();

OnDisable()函数中的事件注销

因为您需要大约3个Buttons,而不是为Button提供多个回调函数,我只使用一个以Button作为参数的函数。然后使用if语句检查按下了哪个Button。这是最好的方法,因为它减少了代码中函数的数量。

将下面的脚本附加到GameObject上,然后将这些按钮拖动到button1, button2button3插槽。

using UnityEngine;
using UnityEngine.UI;
public class ButtonChecker: MonoBehaviour
{
    public Button button1;
    public Button button2;
    public Button button3;
    void OnEnable()
    {
        //Register Button Events
        button1.onClick.AddListener(() => buttonCallBack(button1));
        button2.onClick.AddListener(() => buttonCallBack(button2));
        button3.onClick.AddListener(() => buttonCallBack(button3));
    }
    private void buttonCallBack(Button buttonPressed)
    {
        if (buttonPressed == button1)
        {
            //Your code for button 1
        }
        if (buttonPressed == button2)
        {
            //Your code for button 2
        }
        if (buttonPressed == button3)
        {
            //Your code for button 3
        }
    }
    void OnDisable()
    {
        //Un-Register Button Events
        button1.onClick.RemoveAllListeners();
        button2.onClick.RemoveAllListeners();
        button3.onClick.RemoveAllListeners();
    }
}