检查是否在特定的UI元素上单击了鼠标
本文关键字:元素 单击 鼠标 UI 是否 检查 | 更新日期: 2023-09-27 17:54:58
EventSystem.current.IsPointerOverGameObject()
检查鼠标是否被点击在任何UI元素上。如何检查鼠标是否被点击在特定的 UI元素上(2或3个按钮)?我想使用标签,并继续使用EventSystem.current.IsPointerOverGameObject()
!
您不使用EventSystem.current.IsPointerOverGameObject()
读取按钮点击。
在OnEnable()函数中使用Button.onClick.AddListener(() => callbackfunctionName());
注册Button
事件。
然后使用Button.onClick.RemoveAllListeners();
OnDisable()
函数中的事件注销因为您需要大约3个Buttons
,而不是为Button
提供多个回调函数,我只使用一个以Button
作为参数的函数。然后使用if语句检查按下了哪个Button
。这是最好的方法,因为它减少了代码中函数的数量。
将下面的脚本附加到GameObject上,然后将这些按钮拖动到button1
, button2
和button3
插槽。
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();
}
}