项目的要求如下:在APP中点击3D场景的列表,打开并进入Unity的3D场景页面,然后在Unity中可以点击返回按钮退出Unity页面再次返回到IOS原生应用,前提是在同一个APP中进行
实现概要如下:
1.从Unity导出IOS工程,在导出IOS工程中继续编写Native APP所需要的代码
2.在工程AppDelegate文件中(Unity5.0工程导出的为UnityAPPController)修改原先的启动方式为先启动我们编写的Native APP(下面会详细说)
3.在Unity View启动后,使用IOS代码为Unity View添加一个关闭按钮
4.在IOS中增加退出(其实是挂起)Unity的function
5.在IOS中增加启动(包含重新启动)Unity的function
6.解决双向传递数据问题
详细步骤:
1.导出工程
2.打开导出的IOS工程如下:
3.修改工程启动方式,由先启动unity视图,修改为先启动我们的ViewController
这里加入了一个homePageEnable变量,表示我们的Homepage是否被启动过,如果启动做,就不再重复执行
4.startHomePage方法如下:
这样,我们就可以实现工程直接先启动我们的视图,其实总结一下很简单,把APP的rootViewController修改成我们的,并且停用原有Unity的相同功能代码。
启动后如何关闭呢???关闭又重新打开Unity视图是否会出现问题呢??不要急,跟着我一步一步来搞定!:)
如上文所说,Unity一旦被我们打开后,我们是不需要彻底关闭的,我们需要返回到IOS Native View的时候,直接将Unity View Pause到后台,并且把window的rootViewController再次设置成我们的homepage即可。
5.在IOS native app代码中打开unity
第一次打开Unity,直接调用UnityAppController中的startUnity函数即可,我这里写了这么多代码,是因为我时swift代码的调用,这里我将UnityAppController作为一个对象放在如图所示的全局变量rootController(它就是一个普通的UIViewController)的属性UVC中
第二次打开的Unity的代码,是我自己写的,如下:
启动,和反复启动Unity页面搞定了,可是如何关闭呢??一起来看看吧!
5.Unity View启动时在页面中初始化一个我们实现写好的关闭按钮的UIView
6.按钮就是一个放在一个普通的UIView,该按钮的动作是去调用一个退出Unity视图程序,退出的方法依然写在UnityAppController中,如下图:
7.IOS打开Unity并传值的这个我就不写了,网上可以搜到一堆。