2016-05-13 128 views
1

我已經在android studio中製作了一個應用程序,並且在Unity中製作了一款遊戲。現在我想把這兩者結合在一起。在調用unityNativePlayer的android中啓動是沒有問題的。但是當我想從團結活動回到MainActivity.java時,就會發現:我在Unity遊戲中有一個退出按鈕,調用Application.exit();當我按下按鈕時沒有任何反應。有錯誤嗎?我沒有把它變成C#和團結。從Unity活動返回到android studio中的MainActivity

回答

1

Application.exit()在Unity API中不存在。

對於編輯器,使用UnityEditor.EditorApplication.isPlaying = false;

使用Application.Quit()爲您的版本。

最好使用Editor預處理器來做到這一點,否則在構建包含其他平臺代碼行UnityEditor.EditorApplication.isPlaying = false;的代碼時會出現問題。

下面的代碼應該解決了這個問題:

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

請明白,你應該必須有用於移動設備的任何退出UI Button。它會工作,但這是一個糟糕的設計。這是物理主頁(iOS)或返回(Android)按鈕的用途。

編輯

你只是想從Java退出團結的活動。該功能應該做到這一點。

public void quitUnityActivity() 
{ 
    UnityPlayer.currentActivity.runOnUiThread(new Runnable(){ 
     public void run() 
     { 
      Log.v("Unity", "Unity Activity Exited!"); 
      this.mUnityPlayer.quit(); 
      UnityPlayer.currentActivity.finish(); 
     } 
    }); 
} 

如果還是不行,請嘗試

public void quitUnityActivity() 
{ 
    Log.v("Unity", "Unity Activity Exited!"); 
    this.mUnityPlayer.quit(); 
    UnityPlayer.currentActivity.finish(); 
} 

要使用C#從統一調用Java功能。

void exitUnity() 
{ 
    AndroidJavaClass myClass = new AndroidJavaClass("com.companyName.productName.MyClass"); 
    myClass.Call("quitUnityActivity"); 
} 

確保不管你在你的Android工作室命名你的類來代替com.companyName.productName.MyClass

+0

你是對的,我現在可以退出整個程序,但我只想退出unitx y的活動。有沒有辦法做到這一點? –

+0

@EmanuelGraf我真的很想知道你是如何設置這個的......你用Java製作的Android應用程序正在加載Unity活動? – Programmer

+0

是的,它是一個大型應用程序,它在其中託管遊戲。當用戶只想退出遊戲時,應該再次打開應用程序的主要活動。 –