微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Unity 中检测鼠标从 Inspector 释放焦点

如何解决在 Unity 中检测鼠标从 Inspector 释放焦点

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

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

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);
            }   
        }

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。