2016-05-13 86 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

是的,它是一个大型应用程序,它在其中托管游戏。当用户只想退出游戏时,应该再次打开应用程序的主要活动。 –