如何防止除了最上面的游戏对象之外的其他游戏对象在堆叠的游戏对象中接收点击事件
how to prevent others than the top most gameobject receive clicked event in a stacked gameobjects
我有一个 BoxCollider2D
的对象,它位于 BoxCollider
的对象下面。 (详细信息是 UI(我使用 NGUI 资产),BoxCollider
位于 GameObject
和 BoxCollider2D
之上。 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 视频以了解其他方法。
我有一个 BoxCollider2D
的对象,它位于 BoxCollider
的对象下面。 (详细信息是 UI(我使用 NGUI 资产),BoxCollider
位于 GameObject
和 BoxCollider2D
之上。 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 视频以了解其他方法。