Unity3d OnClick 忽略特定层(或仅在特定层上触发
Unity 3d OnClick to ignore specific layer (or fire only on specific laye
有没有办法让标准的 unity OnClick 甚至在忽略特定层时触发?
例如,我在层 "Units" 上有士兵军队,在层 "Ground" 上有地面。当我点击士兵时,它被选中。然后我点击地面,士兵移动到那里。但是如果我点击被另一个士兵遮挡的地面,它甚至会为那个士兵而不是地面开火,因为他离相机更近。
我可以忽略 "Units" 层而不重写整个鼠标点击甚至处理和使用我的自定义光线投射吗?
编辑:
代码在这里,不要以为它会显示任何东西,但
static public void Interact2(Cell target) //this fires from OnClick
{
if (GameLogic.Mode == mode.move)
{
grid.MoveTo(target);
if (selected.actionsAvilable[action.move])
selected.actionsAvilable[action.move] = false;
else
selected.actionsAvilable[action.standard] = false;
GameLogic.Mode = GameLogic.mode.normal;
}
}
更多编辑:
void OnMouseDown() {
if (!UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
GameLogic.Interact2(this);
}
PhysicsRaycaster/PhysicsRaycaster2D/GraphicsRaycaster 组件有一个事件遮罩 属性,它允许您限制它们的光线投射层。当您想要 block/allow 某些层时,您应该从代码中更新 属性。
有没有办法让标准的 unity OnClick 甚至在忽略特定层时触发? 例如,我在层 "Units" 上有士兵军队,在层 "Ground" 上有地面。当我点击士兵时,它被选中。然后我点击地面,士兵移动到那里。但是如果我点击被另一个士兵遮挡的地面,它甚至会为那个士兵而不是地面开火,因为他离相机更近。 我可以忽略 "Units" 层而不重写整个鼠标点击甚至处理和使用我的自定义光线投射吗?
编辑: 代码在这里,不要以为它会显示任何东西,但
static public void Interact2(Cell target) //this fires from OnClick
{
if (GameLogic.Mode == mode.move)
{
grid.MoveTo(target);
if (selected.actionsAvilable[action.move])
selected.actionsAvilable[action.move] = false;
else
selected.actionsAvilable[action.standard] = false;
GameLogic.Mode = GameLogic.mode.normal;
}
}
更多编辑:
void OnMouseDown() {
if (!UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject())
GameLogic.Interact2(this);
}
PhysicsRaycaster/PhysicsRaycaster2D/GraphicsRaycaster 组件有一个事件遮罩 属性,它允许您限制它们的光线投射层。当您想要 block/allow 某些层时,您应该从代码中更新 属性。