检测编辑器何时退出/关闭。

4
我正在制作一个与用C++创建的本地插件通信的编辑器插件。我需要在编辑器即将关闭时通知本地插件。我花了几个小时在Unity的文档中寻找能够用于检测编辑器关闭的事件或回调函数,但是我没有找到任何一个。
通常情况下,在独立构建中会使用OnApplicationQuitOnApplicationPauseOnApplicationFocus来实现这样的功能,但是由于这是针对编辑器的,所以这些方法都不适用。
如果没有内置的解决方案,是否有任何其他方法或黑科技可用?

也许是 editor on destroy - MX D
不是的。当你有一个插件窗口并想要检测该窗口何时关闭时,你可以使用它。我想要检测编辑器本身即将关闭的情况。 - Programmer
2个回答

2

我不是在寻找一种原生的检测关闭方式。我正在寻找一种在C#中实现的方法,然后可以调用本机函数让它知道Unity正在关闭。问题在于如何在C#中检测关闭。 - Programmer
此外,在这里检查进程是无法帮助的,因为我在本地端和C#端都有指针用于传递和接收对象实例。我必须使用C#端的当前指针,然后将其传递到C++端以禁用硬件。基本上,编辑器的实例必须与插件匹配。因此,进程无法执行此操作,因为没有办法检索指针,但感谢您的回答。 - Programmer
在这种情况下,我担心根本不可能。 - MX D
我在考虑使用反射,但是找到正确的变量来挂钩可能需要几天时间。 - Programmer
2
一个可能有点古怪的解决方法是始终在屏幕外打开一个大小为0,0的编辑器窗口。当关闭它时,它会执行你想要做的事情。在按下alt+f4关闭程序时,这将给你1-2秒的时间来清理所有需要清理的东西。 - MX D
1
听起来还不错。我甚至不知道这是否有效,但唯一的坏处是快捷键和窗口。打开未使用的窗口可能会很烦人。如果没有其他解决方案,将使用此方法。 - Programmer

2

现在在Unity 2018.2中有EditorApplication.quitting。

UnityEditor.EditorApplication.quitting += OnQuitting;

private void OnQuitting()
{
    // do what you want to do when editor quit
}

这是一个事件。请详细说明如何使用它。我会接受你的答案。 - Programmer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接