Unity 的 IsPointerOverGameObject 返回不一致

hel*_*on3 5 unity-game-engine

OnMouseDown我注意到,如果后面有世界空间对象,用户界面上的鼠标点击也会触发 Unity和类似的事件。

经过研究,我发现EventSystems.current.IsPointerOverGameObject()Unity 文档没有很好地解释这一点。

根据解释,当指针位于ui 对象上方时,它应该返回 true,但这不是我的经验。

使用它时,它会false在超过一个 Collider2D、true超过另一个 Collider2D 以及true超过 UI 对象时返回。

我不明白它使用什么逻辑来确定何时显示 true 与 false。它的名字很糟糕,因为一切都是“GameObject”。

如果我能找出导致错误信息的原因,我就能​​修复它。

否则,当有人单击 UI 元素中的任意位置时,我需要一种替代方法来忽略世界空间单击。

编辑:看来这EventSystem.current.currentSelectedGameObject != null是一个更有价值的指标。当单击发生时,该值具有实际的 UI 对象,但对于非 UI 对象则不然。它仅在OnMouseDown和中有用OnMouseDrag,因为它的价值仅存在于点击时。