【发布时间】: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