软件版本:Unity5.3.4/Xcode8.1
1、Unity导出的iOS工程文件目录如下:
作为一名开发者,我们拿到这个工程的第一件事,就是找到整个程序的入口,在我们所认知的大多数语言的入口都是Main()函数,OC也不例外,在
Classes文件夹下:
它在Main()函数里面,调用的文件是:
UnityAppController
2、找到这个文件,通过研究发现,UnityAppController和AppDelegate是一样的,而在正常开发中,AppDelegate是对Application的整个生命周期进行管理的,下图为一个UIApplication的生命周期,我们可以看到系统事件存在着非常有用的监听,在UnityAppController.mm里面我们也可以看到对应的函数,这意味着在Unity中一样可以收到这些事件,以后我们将继承UnityAppController,并重写这些监听。也可以看一下这篇文章:http://www.jianshu.com/p/1f2792bc11c4
3、找到UntiyAppController找到StartUnity()这个方法,程序在启动之后会调用这个方法,
到这里,其实基本就已经实现切换到我们自己的界面了,但是可能会有疑问。
疑问一:怎么回到Unity的界面,这里切换了控制器那么Unity的控制器是不是已经拿不到了,或者已经释放了?
答:Unity里面有两个方法拿到RootViewController, GetAppController().window.rootViewController和GetAppController().rootViewController,他们两个内存地址是一样的,我替换的是Window的rootViewController,那么Unity本身的控制器是还是没有释放的,我们可以通过GetAppController().rootViewController去拿到,然后我们就可以用原生方法,pushviewcontroller或者modal去跳转进入。
疑问二:进入Unity如何返回iOS原生界面?
答:这里需要Unity在他们的界面添加一个的外部方法(或者说我们提供一个外部方法给Unity调用),然后我们去根据进入Unity界面的时候是用push或者modal去进行退出操作,例如当前是Modal进入的:
以上其实就是与Unity界面切换的方法,其实不止一种,网上还有很多类似的方法,在这里也分享一下:
这个是当初学习的连接
虽然比较老了,但还是有很多学习的地方
http://www.ceeger.com/forum/read.php?tid=20533 这个也比较详细。
4、真正的交互现在才开始:
Unity本身给我们提供了很多方法,比如下面这些
可以发送消息,发送点击、移动和通知等事件。
举个简单的例子:
这三个参数需要和Unity开发人员进行协商,可以复杂也可以简单,比如复杂到一个json字符串的传递。
到这里,本次分享基本算是讲完,内容可能讲的有点粗糙,但是主要用意是分析一种学习思想,想清楚为什么要这样去做,以及如何去利用已知的知识去学习新的知识等等。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删