2016-04-19 41 views
0

私はUnity3dと統合するアプリケーションを開発しています。私のコードの一部で、Unity3dコードを起動するUnityPlayerActivityを呼び出します。ユーザーがUnity3dの使用を終了すると、彼はボタンを押してAndroidコードに戻ります。私はアンドロイドのコードに戻ったときにUnityPlayerActivityを呼び出した後 私の問題は、次のとおりです。Androidアプリケーションを実行してUnityアクティビティを終了する方法

@Override protected void onDestroy() 
{ 
    mUnityPlayer.quit(); 
    super.onDestroy(); 
} 

アプリケーションがないだけでユニティ活動、閉じられています。私はこの方法を呼び出すことはできませんでしたが、それは記憶を浪費すると思います。

Unity3dアクティビティだけを終了して、アプリケーションを正常に実行できるようにする方法はありますか?Unity3dをもう一度起動する方法はありますか?

Tks

+0

新しいスレッドでユニティアクティビティを開始してから、そのスレッドを終了させることができます。 –

+0

あなたのことを理解できません。あなたのunity3dゲームからアンドロイドの活動に戻って戻ってみませんか? – Lampard

+0

Lipianは内部に小さなUnityゲームを持っているアンドロイドプロジェクトです。私はそのゲームをプレイしてアンドロイドプロジェクトに戻っていきたいと思います。 – user2494863

答えて

0

また、単にリフレクションを使用しているためキル()メソッド呼び出しを避けることができた(で呼び出される終了())現在のプロセスを殺す

すなわち

try { 
     //1 
     Field v = unityPlayer.getClass().getDeclaredField("v"); 
     v.setAccessible(true); 
     Method a = v.getType().getMethod("a"); 
     a.invoke(v.get(unityPlayer)); 

     //2 
     Field o = unityPlayer.getClass().getDeclaredField("o"); 
     o.setAccessible(true); 
     o.set(unityPlayer, true); 

     //3 
     unityPlayer.pause(); 
     Method unloadVR = unityPlayer.getClass().getDeclaredMethod("unloadGoogleVR"); 
     unloadVR.setAccessible(true); 
     unloadVR.invoke(unityPlayer); 

     //4 
     unityPlayer.removeAllViews(); 

     //5 
     Method h = unityPlayer.getClass().getDeclaredMethod("h"); 
     h.setAccessible(true); 
     h.invoke(unityPlayer); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
関連する問題