Unity的Application.Quit()方法使用失效的其他解决方案。

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自定义的还没有结束。使用第一种方法,可以直接杀掉进程。

补充:2023-7-12
ios上的退出,使用exit(0)的方式,结果gpm上有上报崩溃的日志,这个方法不可取。换成abort()之后,无上报崩溃日志。
但是审核不知道能不能通过,如果不通过,就还是使用unity的Appliation.Quit()吧,就卡在退出界面。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值