Custom Editor движение мышки

В кастумном Editor хочется подсвечивать позицию спавна под курсором на некой плоскости типа

Handles.DrawSolidDisc(SomeTargetPosition, new Vector3(0, 1, 0), 32);

Но поскольку ничего не меняется, OnSceneGUI или OnInspectorGUI на движении мышки реагировать не будет, а Update в Editor нет. Как быть?


Ответы (1 шт):

Автор решения: Yaroslav

GUIUtility.hotControl отключает реакцию других объектов сцены на клики.

public void OnSceneGUI () {
    var CurrentEvent = Event.current;
    int controlID = GUIUtility.GetControlID (FocusType.Passive);
    switch (CurrentEvent.GetTypeForControl(controlID)) {
        case EventType.MouseDown: {
            GUIUtility.hotControl = controlID;
            Debug.Log("MouseDown");
            CurrentEvent.Use();
        } break;
        case EventType.MouseMove: {
            Debug.Log("MouseMove");
            CurrentEvent.Use();
        } break;
        case EventType.MouseDrag: {
            GUIUtility.hotControl = controlID;
            Debug.Log("MouseDrag");
            CurrentEvent.Use();
        } break;
        case EventType.MouseUp: {
            GUIUtility.hotControl = 0;
            Debug.Log("MouseUp");
            CurrentEvent.Use();
        } break;
        case EventType.KeyDown: {
            if (Event.current.keyCode == KeyCode.Escape)
                Debug.Log("Escape");
            if (Event.current.keyCode == KeyCode.Space)
                Debug.Log("Space");
        } break;
    }
}
→ Ссылка