1、android手机上,使用方法:Application.Quit()之后,游戏的进程还在。
解决方法编写java代码,打成jar包或aar放到Assets\Plugins\Android\libs下:
public void KillProcess()
{
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
}
2、windows平台看情况使用,能退出游戏则用,否则换成:
参考:https://www.jianshu.com/p/043dffc0d2cd
Debug.LogError("当前进程名:" + System.Diagnostics.Process.GetCurrentProcess().ProcessName);
System.Diagnostics.Process.GetCurrentProcess().Kill();
3、ios平台使用:
Utils.h
extern "C"
{
extern void closeapplication (char *str1, char *str2);
}
Utils.m
#import <Foundation/Foundation.h>
void closeapplication (char *str1, char *str2)
{
NSLog(@"###%@", [NSString stringWithFormat:@"%@ %@", "CloseApp", "CloseApp"]);
exit(0);
}
放在:
Assets\Plugins\iOS
下。
然后C#使用:
#if UNITY_IOS
[DllImport("__Internal")]
static extern void closeapplication (string str1, string str2);
#endif
public void CloseApplication()
{
#if UNITY_IOS
closeapplication("", "");
#elif UNITY_ANDROID
Android.SysteminfoActivity.Call("KillProcess");
#elif UNITY_STANDALONE_WIN
Debug.LogError("当前进程名:" + System.Diagnostics.Process.GetCurrentProcess().ProcessName);
System.Diagnostics.Process.GetCurrentProcess().Kill();
#else
Application.Quit();
#endif
}
这里重点阐述下,android下为啥有时候调用这个Application.Quit()退出不了游戏的情况,这个可以参考:
https://blog.csdn.net/kuangben2000/article/details/107397376
我做了一个测试,自己有一个闪屏的activity,叫做SplashActivty,它继承了SplashActivity extends Activity,这是启动的activity;
然后它启动几秒之后,启动unityplayeractivity,但是不要结束掉自己。
结果使用Application.Quit()后,屏幕黑屏,并且过一会还重启了。很奇怪,所以Application.Quit()只是结束了unity的UnityPlayerActivity,SplashActivty自定义的还没有结束。使用第一种方法,可以直接杀掉进程。文章来源:https://www.toymoban.com/news/detail-503507.html
补充:2023-7-12
ios上的退出,使用exit(0)的方式,结果gpm上有上报崩溃的日志,这个方法不可取。换成abort()之后,无上报崩溃日志。
但是审核不知道能不能通过,如果不通过,就还是使用unity的Appliation.Quit()吧,就卡在退出界面。文章来源地址https://www.toymoban.com/news/detail-503507.html
到了这里,关于Unity的Application.Quit()方法使用失效的其他解决方案。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!