【问题标题】:Detecting the mouse releasing focus from Inspector in Unity在 Unity 中检测从 Inspector 释放焦点的鼠标
【发布时间】:2021-04-25 19:23:04
【问题描述】:

您是否看到,在编辑图像资产上的值,然后单击外部任意位置而不先单击应用后,会出现一个窗口询问您是否要保存或放弃更改?

所以,我很想从OnGUI()OnSceneGUI() 做这件事,而在开始写MyClassEditor : Editor 之后,我意识到我不仅知道如何完成这样的事情;但显然我什至不知道从哪里开始搜索如何检测鼠标“进入”或“离开”用户界面中的任何内容......如果可能的话。

This 是我在谷歌搜索“检测鼠标离开检查员统一”时首先发现的,据我所知,它是关于检测屏幕边界的边缘和游戏窗口边界。所以我检查了the next result,它现在看起来很有希望,因为它似乎描述了我的问题,但这是误导性的,因为该解决方案适用于检测场景视图内的鼠标而不会失去 UI 的焦点......我想要为了检测失去的焦点,所以我回到谷歌只是偶然发现了几个(更像是几个 tbh) 更多类似的案例(比如统一引用 Monobehaviour.OnMouseEnter/Exit)。

这可能表明我有多么迷茫,我并不是要要求解决任何问题,但也许朝着正确的方向稍微推动一下就可以了?我感谢每一个小小的帮助。

编辑: 所以我在[CustomEditor(typeof(MyClass))] public class MyClassEditor : Editor 中尝试了这个:

public override void OnInspectorGUI()
        {
            Event e = Event.current;

            switch (e.type)
            {
                case EventType.MouseDown:
                    Debug.Log("mouse down");
                    break;
                case EventType.MouseEnterWindow:
                    Debug.Log("mouse left a window");
                    break;
                case EventType.MouseLeaveWindow:
                    Debug.Log("mouse entered a window");
                    break;
                default:
                    break;
            }

            base.OnInspectorGUI();

            var click = GUILayout.Button("Quick Fill");

            if (click)
            {
                MyClassEditorWindow.Open((MyClass)target);
            }   
        }

即使按钮起作用并且 [mouse down] 触发(仅当单击我认为是 UIElements(?)的顶部时,但不是在它们之外,在空的检查器区域上-),另一个两个似乎没有被解雇......很确定我做错了不止一件事,不知道是什么。

【问题讨论】:

    标签: c# unity3d assets unity3d-editor


    【解决方案1】:

    EditowWindow 中有一个名为 WantMouseEnterLeaveWindow 的属性。 如果将其设置为 true,您将收到 EventType.MouseLeaveWindow/EventType.MouseEnterWindow 事件。 通常,我在 OnEnable 函数中启用它,如下所示:

    private void OnEnable() { wantsMouseEnterLeaveWindow = true; }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      相关资源
      最近更新 更多