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 某些层时,您应该从代码中更新 属性。