我正在开发一个与Unity3d集成的应用程序,在我的代码的某些部分,我称之为启动Unity3d代码的UnityPlayerActivity。当用户完成使用Unity3d时,他按下一个按钮并返回Android代码。 我的问题是在UnityPlayerActivity调用之后我回到android代码:
@Override protected void onDestroy ()
{
mUnityPlayer.quit();
super.onDestroy();
}
应用程序已关闭,而不仅仅是Unity活动。我不能称这种方法,但我认为这会浪费记忆力。
有什么方法可以让我只退出Unity3d活动并保持我的应用程序正常运行,这样我可以再次启动Unity3d部分吗?
韩国社交协会
答案 0 :(得分:3)
找到答案。只需要在清单上使用另一个进程。
http://answers.unity3d.com/questions/587979/how-do-i-stop-munityplayerquit-closing-the-entire.html
韩国社交协会,
答案 1 :(得分:0)
您也可以使用反射,因此避免调用kill()方法(在quit()中调用),这会杀死当前进程
即
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();
}
答案 2 :(得分:0)
1.重置UnityPlayer类的kill()方法
类MyUnityPlayer扩展了UnityPlayer {
return self[self.index(self.startIndex, offsetBy: randomIndex)]
在mUnityPlayer.quit()中调用kill(),它将终止当前进程:
public MyUnityPlayer(Context context) {
super(context);
}
@Override
protected void kill() {
}
}
所以重写它以避免进程被杀死。
2.在UnityPlayerActivity中将mUnityPlayer的类型更改为MyUnityPlayer
当您要退出活动时,3.call finish()方法的UnityPlayerActivity。 (就我而言,在从UnityPlayerActivity开始一项新活动后,在完成UnityPlayerActivity后,App崩溃了。)