[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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容