在之前的文章中有提到过使用事件触发Unity退出游戏,但这种方式仅适用于已构建的应用程序,而在 Unity 编辑器中,应用程序退出功能会被忽略,因此在播放模式(Play Mode)下没有任何作用。

因为该功能完全被忽略了,但仍然可以通过其他方法从 Unity 中的脚本退出播放模式,只需使用不同的函数就行了。
那么这里需要通过将 Editor Application 类的 IsPlaying 属性设置为 false 来实现:
UnityEditor.EditorApplication.isPlaying = false;
这与之前文章中使用的 Application Quit 退出游戏的效果是差不多的,只是它在编辑器中有效,不过这对于在没有构建游戏的情况下测试游戏退出过程很有帮助,也可以作为快速退出游戏模式的一种便捷的有效方法。例如当按键时退出游戏:
public class QuitManager : MonoBehaviour
{
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
QuitGame();
}
}
public void QuitGame()
{
UnityEditor.EditorApplication.isPlaying = false;
}
}
退出播放模式可以设置为与标准退出功能相同的工作方式,方法是将其放置在按下键或按钮时调用。
虽然将 IsPlaying 设置为 false 可以在编辑器中退出播放模式,但它似乎也在构建的游戏中不起作用。
这是由于 Unity编辑器 类不能包含在构建的应用程序中,因此使用上述代码时甚至无法构建游戏。
如果在使用,则会得到一个较为严重的报错。为此解决该问题我们需要在Unity编辑器中运行不同的代码,也就是我们常说的预处理器指令。例如下面这段代码:
public void QuitGame()
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#endif
Application.Quit();
}
它可以在 Unity 中使用预处理器指令根据特定条件运行不同的代码,可以根据运行游戏的平台运行不同的代码。或者已切换到 Unity 的新输入系统,那么也可以忽略与旧输入管理器相关的代码块。
在这种情况下,预处理器指令可用于检查游戏是否在编辑器中运行。如果是,那么在编辑器中工作时可以使用不同的退出方法,并且在构建游戏时会自动将其排除。