iOS与Unity的交互集成

软件版本:Unity5.3.4/Xcode8.1

1、Unity导出的iOS工程文件目录如下:

                             


iOS与Unity交互_生命周期


作为一名开发者,我们拿到这个工程的第一件事,就是找到整个程序的入口,在我们所认知的大多数语言的入口都是Main()函数,OC也不例外,在

Classes文件夹下:

                                 


iOS与Unity交互_ios_02


它在Main()函数里面,调用的文件是:

 UnityAppController


iOS与Unity交互_生命周期_03



2、找到这个文件,通过研究发现,UnityAppController和AppDelegate是一样的,而在正常开发中,AppDelegate是对Application的整个生命周期进行管理的,下图为一个UIApplication的生命周期,我们可以看到系统事件存在着非常有用的监听,在UnityAppController.mm里面我们也可以看到对应的函数,这意味着在Unity中一样可以收到这些事件,以后我们将继承UnityAppController,并重写这些监听。也可以看一下这篇文章:http://www.jianshu.com/p/1f2792bc11c4


iOS与Unity交互_生命周期_04


3、找到UntiyAppController找到StartUnity()这个方法,程序在启动之后会调用这个方法,


iOS与Unity交互_javascript_05


             

到这里,其实基本就已经实现切换到我们自己的界面了,但是可能会有疑问。

疑问一:怎么回到Unity的界面,这里切换了控制器那么Unity的控制器是不是已经拿不到了,或者已经释放了?

答:Unity里面有两个方法拿到RootViewController, GetAppController().window.rootViewController和GetAppController().rootViewController,他们两个内存地址是一样的,我替换的是Window的rootViewController,那么Unity本身的控制器是还是没有释放的,我们可以通过GetAppController().rootViewController去拿到,然后我们就可以用原生方法,pushviewcontroller或者modal去跳转进入。

  疑问二:进入Unity如何返回iOS原生界面?

答:这里需要Unity在他们的界面添加一个的外部方法(或者说我们提供一个外部方法给Unity调用),然后我们去根据进入Unity界面的时候是用push或者modal去进行退出操作,例如当前是Modal进入的:

 


iOS与Unity交互_ios_06


以上其实就是与Unity界面切换的方法,其实不止一种,网上还有很多类似的方法,在这里也分享一下:

这个是当初学习的连接

 虽然比较老了,但还是有很多学习的地方

   ​ ​ http://www.ceeger.com/forum/read.php?tid=20533​​   这个也比较详细。

4、真正的交互现在才开始:

   Unity本身给我们提供了很多方法,比如下面这些


iOS与Unity交互_javascript_07



可以发送消息,发送点击、移动和通知等事件。

举个简单的例子:



iOS与Unity交互_生命周期_08


这三个参数需要和Unity开发人员进行协商,可以复杂也可以简单,比如复杂到一个json字符串的传递。


   到这里,本次分享基本算是讲完,内容可能讲的有点粗糙,但是主要用意是分析一种学习思想,想清楚为什么要这样去做,以及如何去利用已知的知识去学习新的知识等等。


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空