我们在扩展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());

网友评论