首页 > 解决方案 > 如何从另一个线程退出播放模式

问题描述

是否有可能(甚至以一种骇人听闻的方式)EditorApplication从另一个线程调用函数?更具体地说,我想从另一个线程(不是主 Unity 线程)退出播放模式。

我的用例是,我正在尝试编写一个小片段,在编辑器中检测无限循环,并在检测到时将其中断。到目前为止,我发现的“最好的”是终止进程,但这并没有真正的帮助。

标签: unity3d

解决方案


你不能。Unity 线程与普通程序不同,因为它是基于帧的。您可以要求 Unity 主线程运行方法,方法是设置在每一帧检查的 bool 或设置<Action>Or <Task>Queue,就像上面评论中 remy_rm 建议的链接中解释的那样。

但是这些 hack 不会在 unity 主线程上运行方法,它们只是优雅地要求 Unity 主线程本身运行它。这种差异虽然在正常情况下很微妙,但对您的问题至关重要。当主线程陷入无限循环时,您想调用主线程上的方法来杀死它,但事实并非如此,Unity 的主线程永远不会到达Update()它应该杀死自己的地步。您基本上是给一个永远不会回家的人寄信,如果他被困在某个地方无法回家,他将永远不会阅读。

在这些情况下,我想到的最好方法是附加一个调试器并停止其中的线程。


推荐阅读