Unity3D:检测鼠标是否单击了UI元素?

时间:2020-06-19 14:47:17

标签: c# unity3d user-interface

这是一个非常简单的问题,但是在最新版本的Unity上似乎已经发生了一些变化,我在互联网上发现的答案不再有效,因此什么都没做:

我有一些UI元素,还有一个“ InputController”类,用于处理游戏期间的用户输入(控制器上的输入通过onclick事件处理)。

我正在寻找一种能够知道鼠标是否单击UI元素以阻止我的输入处理执行的方法(并避免用户单击“暂停”,同时游戏也执行“ left”按钮。”

现在,我喜欢的大多数解决方案都有些混乱或使用了EventSystem.current.IsPointerOverGameObject()(例如在写此问题时显示的this one),该值在2019.4中不再出现。因此,有任何新方法可以做到这一点,我是否必须做出一些骇人听闻的解决方案以从UI接收事件,然后阻止执行代码,还是我在这里遗漏了什么?

1 个答案:

答案 0 :(得分:1)

您应该研究IPointerEnterHandler和IPointerExitHandler之类的接口。如果为UI元素实现这些接口,则可以向这些接口所需的OnPointerEnter和OnPointerExit方法添加必要的代码。

应该像在isInputEnabled这样的InputController中添加布尔值一样简单,并且仅在为true时才处理输入。将其设置为false OnPointerEnter和true OnPointerExit。