[Unity编辑器扩展] 实现笔刷功能时如何屏蔽Unity的鼠标选择事件

我们在扩展Unity的编辑器的时候经常会需要实现笔刷这样的一个功能,比如我们需要用鼠标点击或者拖拽就会生成一些游戏物体。
但是Unity默认在Scene窗口下鼠标左键点击、拖拽是选择游戏物体的功能,这会影响我们的笔刷功能。

我们可以通过在OnSceneGUI周期函数下面加这句代码来屏蔽关掉Unity默认的鼠标选择功能:

void OnSceneGUI(){
    HandleUtility.AddDefaultControl(GUIUtility.GetControlID(FocusType.Passive));
}

还有一点我们在实现笔刷功能需要注意的就是鼠标射线检测的功能,我们在获取Scene窗口下的鼠标位置的时候需要对y轴进行一次反转,这样再进行屏幕射线检测才能获得正确的结果:

private Vector2 GetMousePos()
{
    var mousePos = Event.current.mousePosition;
    mousePos.y = Camera.current.pixelHeight - mousePos.y;
    return mousePos;
}

Camera.current.ScreenPointToRay(GetMousePos());
editor_brush.gif

你可能感兴趣的:([Unity编辑器扩展] 实现笔刷功能时如何屏蔽Unity的鼠标选择事件)