如何防止除了最上面的游戏对象之外的其他游戏对象在堆叠的游戏对象中接收点击事件

how to prevent others than the top most gameobject receive clicked event in a stacked gameobjects

我有一个 BoxCollider2D 的对象,它位于 BoxCollider 的对象下面。 (详细信息是 UI(我使用 NGUI 资产),BoxCollider 位于 GameObjectBoxCollider2D 之上。 UI 对象有一个实现 OnClick() 的脚本,GameObject 有一个实现 OnMouseDown() 的脚本。当我单击 UI 对象时,也会从 GameObject 触发单击事件。

我只想要 UI 对象在彼此堆叠时触发事件。我怎样才能做到这一点?

包括使用 UnityEngine.EventSystems; 在您的 OnMouseDown() 函数中,添加 if (!EventSystem.current.IsPointerOverGameObject()) 然后将所有假设为 运行 的代码放在 [=14] 内=]声明。

using UnityEngine.EventSystems;
public void OnMouseDown()
{
 if (!EventSystem.current.IsPointerOverGameObject())
 {
  //Put all your code for your gameobject here
 }
}

这应该有效,但如果无效,请观看 this 视频以了解其他方法。