前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >零基础入门 26:通过代码关闭程序

零基础入门 26:通过代码关闭程序

作者头像
韩东吉
发布2018-10-19 16:57:35
5940
发布2018-10-19 16:57:35
举报

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程序的方法。接口和代码都在上面,大家可以直接复制使用。

下期见~~~~~~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 韩东吉的Unity杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档