在IOS APP中反复打开和关闭Unity页面

项目的要求如下:在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.导出工程

在IOS APP中反复打开和关闭Unity页面_第1张图片

在IOS APP中反复打开和关闭Unity页面_第2张图片


2.打开导出的IOS工程如下:

在IOS APP中反复打开和关闭Unity页面_第3张图片

3.修改工程启动方式,由先启动unity视图,修改为先启动我们的ViewController

这里加入了一个homePageEnable变量,表示我们的Homepage是否被启动过,如果启动做,就不再重复执行

在IOS APP中反复打开和关闭Unity页面_第4张图片

4.startHomePage方法如下:

在IOS APP中反复打开和关闭Unity页面_第5张图片

这样,我们就可以实现工程直接先启动我们的视图,其实总结一下很简单,把APP的rootViewController修改成我们的,并且停用原有Unity的相同功能代码。

启动后如何关闭呢???关闭又重新打开Unity视图是否会出现问题呢??不要急,跟着我一步一步来搞定!:)

如上文所说,Unity一旦被我们打开后,我们是不需要彻底关闭的,我们需要返回到IOS Native View的时候,直接将Unity View Pause到后台,并且把window的rootViewController再次设置成我们的homepage即可。

5.在IOS native app代码中打开unity

在IOS APP中反复打开和关闭Unity页面_第6张图片

第一次打开Unity,直接调用UnityAppController中的startUnity函数即可,我这里写了这么多代码,是因为我时swift代码的调用,这里我将UnityAppController作为一个对象放在如图所示的全局变量rootController(它就是一个普通的UIViewController)的属性UVC中

第二次打开的Unity的代码,是我自己写的,如下:

在IOS APP中反复打开和关闭Unity页面_第7张图片

启动,和反复启动Unity页面搞定了,可是如何关闭呢??一起来看看吧!

5.Unity View启动时在页面中初始化一个我们实现写好的关闭按钮的UIView

在IOS APP中反复打开和关闭Unity页面_第8张图片

6.按钮就是一个放在一个普通的UIView,该按钮的动作是去调用一个退出Unity视图程序,退出的方法依然写在UnityAppController中,如下图:

在IOS APP中反复打开和关闭Unity页面_第9张图片

7.IOS打开Unity并传值的这个我就不写了,网上可以搜到一堆。

你可能感兴趣的:(在IOS APP中反复打开和关闭Unity页面)