關(guān)于在ios中整合Unity的配置,參見上一篇文章 http://m.itdecent.cn/p/6553127e6138
目前網(wǎng)上大部分的教程都是來自the-nerd的版本,所以都是用兩個(gè)window來相互切換,這樣有兩點(diǎn)問題
1、如何設(shè)置ios整體豎屏,unity界面單獨(dú)橫屏?
2、如何將Unity展示在某個(gè)子View中?
接下來就來解決這兩個(gè)問題
1.修改AppDelegate


1.1 只保留unityAppController,其他方法對(duì)象都不要
1.2 這樣Unity就初始化好了
1.3 Unity無論在Android還ios都是和當(dāng)前app的進(jìn)程綁定在一起的,通常Unity退出,也會(huì)把程序殺死。不同的是,Android中可以創(chuàng)建分支進(jìn)程,所以Unity嵌套在Android平臺(tái)中,可以需要時(shí)再創(chuàng)建,關(guān)閉頁面時(shí)就銷毀,ios不行,只能一開始就初始化。
2.創(chuàng)建一個(gè)UI
自定義一個(gè)類繼承UIViewController,在storyboard上添加一個(gè)ViewController 關(guān)聯(lián)起來

對(duì)應(yīng)的 .mm文件

2.1 UI界面很簡單,上面一個(gè)view命名為unityView,下面添加一個(gè)button用于返回,稍微加一下居中靠邊的約束
2.2 添加到指定的View中
一定要import UnityView.h 否則編譯報(bào)錯(cuò)
一定要改成.mm文件 否則運(yùn)行時(shí)報(bào)錯(cuò)
frame可以任意設(shè)定,以此來調(diào)整unity顯示的位置
其實(shí)UnityGetGLView()就是unityViewextern "C" UIView* UnityGetGLView() { return GetAppController().unityView; }2.3 橫屏
必須是模態(tài)推出(modal)
導(dǎo)出Unity項(xiàng)目最好是 AutoRotation (Orientation?)
shouldAutorotate 必須返回NO 否則轉(zhuǎn)動(dòng)屏幕后會(huì)回到ios app設(shè)置的方向
ios程序設(shè)置豎屏
3 運(yùn)行圖

4 Bug
有一個(gè)問題至今沒有解決,項(xiàng)目中需要切換3D模型和AR場景
顯示橫屏?xí)r,3D場景界面顯示正確,AR場景的圖標(biāo)也顯示正確方向,但攝像頭取景卻會(huì)反向(影像是倒的),暫時(shí)還不知道如何處理(感覺是高通的Bug,有知道的可以分享一下),如果單獨(dú)只是用3D場景,上面的方式是沒有問題的。
以上,代碼還是蠻簡單的。