将Unity3D 添加到IOS具体页面 以及横屏显示
关于在ios中整合Unity的配置,参见上一篇文章 http://www.jianshu.com/p/6553127e6138
目前网上大部分的教程都是来自the-nerd的版本,所以都是用两个window来相互切换,这样有两点问题
1、如何设置ios整体竖屏,unity界面单独横屏?
2、如何将Unity展示在某个子View中?
接下来就来解决这两个问题
1.修改AppDelegate
AppDelegate h.png AppDelegate m.png1.1 只保留unityAppController,其他方法对象都不要
1.2 这样Unity就初始化好了
1.3 Unity无论在Android还ios都是和当前app的进程绑定在一起的,通常Unity退出,也会把程序杀死。不同的是,Android中可以创建分支进程,所以Unity嵌套在Android平台中,可以需要时再创建,关闭页面时就销毁,ios不行,只能一开始就初始化。
2.创建一个UI
自定义一个类继承UIViewController,在storyboard上添加一个ViewController 关联起来
UI.png
对应的 .mm文件
代码.png
2.1 UI界面很简单,上面一个view命名为unityView,下面添加一个button用于返回,稍微加一下居中靠边的约束
2.2 添加到指定的View中
一定要import UnityView.h 否则编译报错
一定要改成.mm文件 否则运行时报错
frame可以任意设定,以此来调整unity显示的位置
其实UnityGetGLView()就是unityViewextern "C" UIView* UnityGetGLView() { return GetAppController().unityView; }
2.3 横屏
必须是模态推出(modal)
导出Unity项目最好是 AutoRotation (Orientation?)
shouldAutorotate 必须返回NO 否则转动屏幕后会回到ios app设置的方向
ios程序设置竖屏
3 运行图
QQ图片20170825194850.png4 Bug
有一个问题至今没有解决,项目中需要切换3D模型和AR场景
显示横屏时,3D场景界面显示正确,AR场景的图标也显示正确方向,但摄像头取景却会反向(影像是倒的),暂时还不知道如何处理(感觉是高通的Bug,有知道的可以分享一下),如果单独只是用3D场景,上面的方式是没有问题的。
以上,代码还是蛮简单的。