2017-08-11 40 views
0

我試圖在按下Android手機的返回鍵時讓應用程序退出。Application.Quit()在Android上不起作用

我試圖把這些代碼連接到一個遊戲物體存在於我的所有場景腳本的更新,因爲DontDestroyOnLoad

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

我只是測試看到的東西,如果我進去了,如果,當我的手機上玩。我到了那裏。 Application.Quit()是這裏的問題。我希望有人能夠幫助我解釋我如何在Android中退出應用程序。

謝謝! :)

+0

也許這可以幫助你:http://answers.unity3d.com/questions/560661/how-do-i-get-inputgetkeydownkeycodeescape-to-regis.html。 「我發現在舊手機上(在薑餅上),GetKey()不起作用 - 然而,Input.GetAxis()(一旦我定義了一個使用菜單或轉義的軸)」-davididev – Greg

+0

1.你把'if(Input.GetKeyDown(KeyCode.Escape))'?您必須縮小問題範圍,確定是否在Android上調用了Input.GetKeyDown,或者如果Application.Quit();是問題所在。 – Programmer

+0

@Programmer我縮小了它,似乎Application.Quit()是問題。我無法弄清楚爲什麼,因爲網絡上的每個地方都說它應該在Android上運行。 –

回答

0

我知道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還有另一種解決方法。

下面是其他的解決方法:

。在Awake函數中將Input.backButtonLeavesApp設置爲true。它應該自動當Android上的後退按鈕被按下時退出應用程序。

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

。如果這不起作用,然後殺死進程:

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

如果這不起作用,那麼通過編輯器提交bug報告。

+0

殺死這個過程就像一個魅力。我沒有嘗試backButtonLeavesApp,因爲我想在實際退出之前顯示「你確定」面板。謝謝! :) –

+0

這是有道理的,但至少有一個解決了它。快樂的編碼! – Programmer

相關問題