Hello,各位小伙伴,又是好久没见,因为最近工作变动的原因,停更了快一个月的时间,好多同学都QQ问我什么时候更,会不会不更新了之类的。答案当然是不会的。
继UGUI教程结束之后,开始了新的Unity干货分享,大家普遍也都觉得这样的方式很容易接受,一篇一个干货,对应一个知识点,gif动图也让理解变得更容易。既然效果还可以,那今后可能也大概会是这样的方式进行分享。
今天来说一下,Unity制作出来的项目,如何通过代码在各平台进行程序的关闭退出操作。
话不多说,直接创建一个空项目,命名为CloseApp,然后创建一个文件夹,名为CloseApp,里面创建一个名为CloseAppFunc的脚本。
如下图。
鉴于之前大家的反馈建议,对于gif编写代码的这步讲解,觉得可以忽略,那就直接把代码贴上来,方便直接观看。
脚本内的代码就这么多,定义一个static函数,方便外部调用,CloseAppHandle里针对不同的安卓和ios平台进行了逻辑区分,如果是安卓,直接调用Application.Quit()进行程序的退出,而iOS平台,则需要调用ios底层的接口,这里我们处理iOS平台关闭,调用了一个CloseApp()函数。
然后在下面定义了一个extern(外部函数修饰)的CloseApp()函数,上面的DllImport也属于固定写法, 照写即可。
代码如下:
using UnityEngine;
using System.Collections;
using System;
using UnityEngine.UI;
using System.Runtime.InteropServices;
public class CloseAppFunc : MonoBehaviour
{
#region Public Attributes
#endregion
#region Private Attributes
#endregion
#region Public Methods
///ios和Android平台关闭程序的接口
public static void CloseAppHandle()
{
#if UNITY_ANDROID
Application.Quit();
#elif UNITY_IPHONE
CloseApp();
#endif
}
#endregion
#region Override Methods
#endregion
#region Private Methods
[ DllImport( "__Internal" )]
private static extern void CloseApp();
#endregion
#region Inner
#endregion
}
调用的外部函数CloseApp在哪里实现呢?
这实际上是通过 C#去调用ios的底层代码方法。
我们在项目中创建一个特殊文件夹:Plugins,然后再创建另外一个子文件夹,iOS,然后创建一个脚本,CloseApp.mm。如下图
CloseApp.mm实际上是ios的混编文件,里面可以调用ios底层的接口,我们就是通过这样的方式,调用ios底层的关闭程序方法,再通过C#端的外部函数调用,完成对ios平台程序的退出关闭。
CloseApp.mm的代码如下:
extern "C"
{
void CloseApp()
{
UIApplication *app = [UIApplication sharedApplication];
[app performSelector:@selector(suspend)];
[NSThread sleepForTimeInterval:1.0];
exit(0);
}
}
就是这么简单,就完成了对ios和安卓两个平台的关闭程序的接口封装。
接下来,大家可以随便创建保存一个场景,创建一个按钮,为按钮增加点击事件,来调用我们封装的关闭程序接口进行测试或使用啦。
然后为按钮增加点击事件
好了,以上就是今天的分享内容,通过代码关闭Unity程序的方法。接口和代码都在上面,大家可以直接复制使用。
下期见~~~~~~