將Unity3D 添加到IOS具體頁面 以及橫屏顯示

關(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

AppDelegate h.png
AppDelegate m.png

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)起來


UI.png

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


代碼.png

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()就是unityView

extern "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)行圖

QQ圖片20170825194850.png

4 Bug

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

以上,代碼還是蠻簡單的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容