Application.Quit()无法在Android上运行

时间:2017-08-11 13:32:05

标签: c# android unity3d

当您按下Android手机的后退/返回键时,我试图让应用程序自行退出。

我尝试将此代码放在附加到我所有场景中的gameObject的脚本更新中,因为DontDestroyOnLoad

if (Input.GetKeyDown(KeyCode.Escape)) 
{ 
    Application.Quit(); 
}

我刚刚测试了一些东西,看看我是否进入了if,当我在手机上玩时。我到了那里。 Application.Quit()是问题所在。我希望有人可以帮助我解释如何在Android中退出应用程序。

谢谢! :)

3 个答案:

答案 0 :(得分:2)

  

我知道Application.Quit()在编辑器中不起作用,

是的,它在编辑器中不起作用,但您可以在编辑器中使用UnityEditor.EditorApplication.isPlaying,但必须将其包裹在UNITY_EDITOR宏周围。请参阅以下示例:

void Quit()
{
    #if UNITY_EDITOR
    UnityEditor.EditorApplication.isPlaying = false;
    #else
    Application.Quit();
    #endif
}
  

我把它缩小了,似乎Application.Quit()就是问题所在。   我无法弄清楚为什么因为网络上的所有地方都应该这样做   在Android上工作

Application.Quit()功能应该适用于Android。如果它没有,那就是一个错误。

Unity中还有另一种解决方法。

以下是其他解决方法:

<强> 1 即可。在true函数中将Input.backButtonLeavesApp设置为Awake。在Android上按下后退按钮时,会自动退出应用。

void Awake()
{
    Input.backButtonLeavesApp = true;
}

<强> 2 即可。如果这不起作用则终止进程:

System.Diagnostics.Process.GetCurrentProcess().Kill();

如果这也不起作用,则通过编辑器提交错误报告。

答案 1 :(得分:0)

Application.Quit()应该可以工作,至少在我的应用程序中可以。

这是另一种特定于Android的方式,它以某种可控制的方式退出您的应用程序(不仅仅是终止进程):

Ss = [0.806, 0.773, 1.1014, 0.786, 1.095, 0.803, 
      0.806, 0.785, 1.014, 0.586, 0.955, 1.088, 
      0.752, 1.010, 1.246, 0.879, 1.284]
S1 = [0.228, 0.220, 0.280, 0.231, 0.297, 0.226,
      0.228, 0.231, 0.280, 0.174, 0.264, 0.295, 
      0.217, 0.279, 0.338, 0.247, 0.351]
Fs = [1.200, 1.200, 1.094, 1.200, 0.800, 1.200, 
      1.200, 1.200, 1.094, 1.266, 1.118, 1.065, 
      1.200, 1.096, 1.200, 0.800, 0.900]
F1 = [1.500, 1.500, 2.040, 1.500, 0.800, 1.500,
      1.500, 1.500, 2.040, 1.500, 2.072, 2.010, 
      1.500, 2.042, 1.500, 0.800, 0.800]

SDS = []                # Short Term Design Acceleration Constant (Dimensionless)
SD1 = []                # 1 second Period Design Acceleration Constant (Dimensionless)

for i in range(len(F1)):
    SDS.append(Ss[i]*Fs[i])
for i in range(len(F1)):
    SD1.append(S1[i]*F1[i])

答案 2 :(得分:0)

编辑器应用运行时的一点补充说明:ExitPlaymode();

    #if UNITY_EDITOR
    UnityEditor.EditorApplication.ExitPlaymode();
    #else
    Application.Quit();
    #endif

同样有效(使用 LTS 2019.4.16f)