EventSystem.current.IsPointerOverGameObject()
检查是否在任何UI元素上单击了鼠标。如何检查鼠标是否在 特定的 UI元素(2或3个按钮)上单击?我想使用标签并继续使用EventSystem.current.IsPointerOverGameObject()
!
答案 0 :(得分:2)
您不能使用EventSystem.current.IsPointerOverGameObject()
来阅读按钮点击次数。
您在OnEnable()函数中使用Button
注册Button.onClick.AddListener(() => callbackfunctionName());
个事件。
然后使用OnDisable()
Button.onClick.RemoveAllListeners();
函数中取消注册该事件
由于您需要大约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();
}
}