Unity和iOS原生界面交互示例

這篇文章中主要介紹的是通過對(duì)Unity打包出來的Xcode工程的修改來實(shí)現(xiàn)iOS原生界面到Unity界面的跳轉(zhuǎn)卿拴,再從Unity界面跳轉(zhuǎn)回我們的iOS界面齐鲤,與最近的我們手機(jī)上的支付寶應(yīng)用的跳轉(zhuǎn)到AR紅包界面類似(但是功能肯定和人家沒法比)。

Unity界面實(shí)現(xiàn)的功能時(shí)一個(gè)簡(jiǎn)單的AR效果宙拉,實(shí)現(xiàn)簡(jiǎn)單的掃描兩張圖片谢揪,然后會(huì)在手機(jī)屏幕上出現(xiàn)兩只帶有奔跑動(dòng)畫的恐龍模型删顶,如果將這兩張圖片靠近咬清,這兩個(gè)模型能夠?qū)崿F(xiàn)簡(jiǎn)單的攻擊交互闭专,將兩張圖片分開后,兩個(gè)模型又會(huì)恢復(fù)之前奔跑的動(dòng)畫旧烧。

iOS界面實(shí)現(xiàn)的功能也比較簡(jiǎn)單影钉,只是簡(jiǎn)單的實(shí)現(xiàn)兩個(gè)兩個(gè)界面的跳轉(zhuǎn)功能。

這里實(shí)現(xiàn)這兩個(gè)效果的時(shí)候粪滤,我使用到的開發(fā)工具有Unity5.5版本和Xcode8.2.1斧拍,環(huán)境是MacOX。這里對(duì)版本的要求不大杖小,但是盡量使用Unity5.0以上的版本肆汹。

一、Unity界面AR效果的實(shí)現(xiàn)

這里AR效果是借助Vuforia的SDK來實(shí)現(xiàn)予权,有關(guān)高通的AR使用流程昂勉,這里就不再贅述了,如果有興趣可以去查看Vuforia官網(wǎng)查看文檔扫腺,當(dāng)然也可以查看這里岗照。

1、創(chuàng)建Unity項(xiàng)目笆环,導(dǎo)入從高通下載的資源包(這個(gè)是指上傳到高通圖片庫中要掃描的圖片的資源包)攒至,和高通自己的資源包(這個(gè)是開發(fā)包,我使用版本是6.1)躁劣。

2迫吐、刪掉系統(tǒng)的攝像機(jī),將ASset文件中Prefab中將ARCamera拖到工程里账忘,注意這里將使用系統(tǒng)的攝像機(jī)禁用掉就可以了志膀,因?yàn)榇龝?huì)我們打包成Xcode工程,使用的手機(jī)的攝像頭鳖擒。要修改的腳本如下圖1-1

1-1

3溉浙、將自己在高通官網(wǎng)申請(qǐng)的AppKey放到Unity工程中,如下圖

4蒋荚、將Asset中的Prefab下的ImageTarget拖到場(chǎng)景中戳稽,選中相應(yīng)的恐龍圖片,將恐龍模型包導(dǎo)入到工程期升,注意這里恐龍的模型上帶有奔跑的動(dòng)畫狀體機(jī)广鳍,將run設(shè)置成恐龍模型的默認(rèn)狀態(tài),這樣掃描出來的恐龍模型就會(huì)出現(xiàn)奔跑的效果吓妆。

5赊时、要分別給恐龍模型添加tag和碰撞器和剛體,來實(shí)現(xiàn)當(dāng)兩個(gè)模型在靠近的時(shí)候能夠發(fā)生碰撞檢測(cè)行拢,來實(shí)現(xiàn)恐龍模型從奔跑狀態(tài)切換到互相攻擊的狀態(tài)祖秒,注意這里同時(shí)給模型加上AudioSource組件,來實(shí)現(xiàn)恐龍互相攻擊時(shí)發(fā)出聲音舟奠。

6竭缝、這里要?jiǎng)?chuàng)建腳本來控制模型的一系列動(dòng)畫街图,這里腳本的實(shí)現(xiàn)主要是兩個(gè)模型觸發(fā)行為的檢測(cè)鬼悠,所以主要代碼就是觸發(fā)器方法浙滤。(注意我這里分別給兩個(gè)恐龍模型對(duì)象添加兩個(gè)tag值來進(jìn)行區(qū)分碰辅,分別是sanjiaolong 和baolong)? 下面是三角龍模型身上的腳本:

下面是暴龍模型身上的腳本最后實(shí)現(xiàn)的效果如下

二庭敦、將Unity工程打包成Xcode工程

打包后的工程使用Xcode打開后,iOS工程項(xiàng)目整個(gè)框架如下

三瞳收、修改Xcode工程中Unity界面的入口為自定義的ViewController

按照慣例惊完,Main方法作為程序的主要入口稽莉,我們可以查看該函數(shù)的內(nèi)容實(shí)現(xiàn)

注意上面的Main方法中出現(xiàn)的UnityAppController,該類就是作為控制類來實(shí)現(xiàn)Unity在iOS上顯示的功能坛猪,在Main方法中就是將該控制器作為參數(shù)傳遞脖阵,即Main方法之后就會(huì)進(jìn)入該類執(zhí)行。

所以這是我們進(jìn)入到UnityAppController.mm墅茉,來查看該類中的方法執(zhí)行順序命黔,可以看到這里的代碼結(jié)構(gòu)和OC的一般類的代碼結(jié)構(gòu)類似,除此之外還有一些C語言程序就斤,作為相對(duì)底層中Unity與iOS交互的橋梁悍募,不用管。我們需要關(guān)注的是:UnityAppController.mm中函數(shù)執(zhí)行的順序以及我們能夠在哪里加上我們自己的代碼實(shí)現(xiàn)”項(xiàng)目入口”的修改洋机,從而做到整個(gè)程序一上來先顯示我們自己的View坠宴,然后通過自定義事件再來跳轉(zhuǎn)到Unity部分。所以整個(gè)項(xiàng)目看起來就像把Unity導(dǎo)出的工程剖開槐秧,將我們自定義的部分”塞”進(jìn)去啄踊,從而實(shí)現(xiàn)iOS與Unity3d的交互。

操作步驟

通過UnityAppController.mm類中方法的執(zhí)行順序可以看出刁标,在執(zhí)行完StartUnity時(shí)颠通,才讓Unity界面顯示出來,所以這個(gè)方法就是在Xcode中Unity界面的入口膀懈,所以這里我們可以通過修改這個(gè)入口顿锰,從而實(shí)現(xiàn)對(duì)Unity界面顯示的控制。

1启搂、在Xcode工程中創(chuàng)建一個(gè)OC的類硼控,分別為HomeViewController,EnterIUnityViewController,以及單例類MyDataManager

2、各個(gè)類的作用胳赌,首先解釋一下單例類MyDataManager牢撼,在該單例中實(shí)現(xiàn)存放一些全局變量,來判斷是否進(jìn)行跳轉(zhuǎn)的判斷疑苫,以及在該單例中還聲明了存放UIViewController和UIWindow變量熏版,因?yàn)閷?shí)現(xiàn)修改程序入口的本質(zhì)就是對(duì)window進(jìn)行修改。

PS:因?yàn)橛型瑢W(xué)一直問這里單例類里實(shí)現(xiàn)的代碼捍掺,所以這里更新下撼短,將單例類中的.h文件和.m文件的代碼截圖放在這里。

.h文件


.m文件

而HomeViewController是自定義的一個(gè)來挺勿,該類只是簡(jiǎn)單地提供一個(gè)iOS的原生界面曲横,在該界面上防止按鈕,實(shí)現(xiàn)向EnterUnityViewController跳轉(zhuǎn)不瓶,這里使用的模態(tài)禾嫉。

修改startUnity方法中代碼

EnterViewController中主要實(shí)現(xiàn)點(diǎn)擊進(jìn)入U(xiǎn)nity界面的方法灾杰,同時(shí)在該類中實(shí)現(xiàn)進(jìn)入到Unity界面時(shí),在Unity界面上添加返回到之前界面按鈕的方法夭织。在該方法里要判斷是不是第一次啟動(dòng)Unity吭露,如果是第一次啟動(dòng)Unity界面的話吠撮,需要添加返回按鈕尊惰,如果不是的話,就通過單例中保存的Unity的viewController取出來進(jìn)行展示泥兰。具體實(shí)現(xiàn)如下

添加的返回按鈕的方法如下

3弄屡、如果是第一次啟動(dòng)Unity界面的話,還是需要到Unity自動(dòng)生成的UnityAppController中進(jìn)行修改它的入口函數(shù)的鞋诗,在入口函數(shù)中進(jìn)行判斷膀捷,代碼如下:

四、將Xcode連接真機(jī)進(jìn)行測(cè)試

真機(jī)測(cè)試設(shè)置

這里連接真機(jī)進(jìn)行測(cè)試的時(shí)候削彬,現(xiàn)在蘋果提供免費(fèi)賬號(hào)也可使用真機(jī)測(cè)試全庸,所以自己申請(qǐng)個(gè)AppleID就可以了,還有就是第一次連接真機(jī)的時(shí)候編譯時(shí)間較長融痛,耐心等待

運(yùn)行后的效果如下:

最終運(yùn)行效果

這里只是簡(jiǎn)單實(shí)現(xiàn)跳轉(zhuǎn)的效果壶笼,另外功能的實(shí)現(xiàn)Xcode工程700多兆,所以不方便上傳雁刷,文章中代碼都是截圖的覆劈。另外本篇文章的實(shí)現(xiàn)參照了CSDN上一位名為foreverhyh58的專欄的一片文章,多謝博主提供的方案沛励,這里做了一些改動(dòng)责语,原文地址為:http://blog.csdn.net/foreverhyh58/article/details/50353158

另外因?yàn)檫@里的Xcode工程是由Unity開發(fā)工具導(dǎo)出來的,并且其中含有高通的SDK目派,所以Xcode工程有大概七百兆坤候,但是后來打包后安裝在手機(jī)的安裝包大小只有60兆左右,可見Unity對(duì)移動(dòng)端的支持真的是極好的企蹭。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末白筹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子练对,更是在濱河造成了極大的恐慌遍蟋,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件螟凭,死亡現(xiàn)場(chǎng)離奇詭異虚青,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)螺男,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門棒厘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纵穿,“玉大人,你說我怎么就攤上這事奢人∥矫剑” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵何乎,是天一觀的道長句惯。 經(jīng)常有香客問我,道長支救,這世上最難降的妖魔是什么抢野? 我笑而不...
    開封第一講書人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮各墨,結(jié)果婚禮上指孤,老公的妹妹穿的比我還像新娘。我一直安慰自己贬堵,他們只是感情好恃轩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著黎做,像睡著了一般叉跛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上引几,一...
    開封第一講書人閱讀 51,365評(píng)論 1 302
  • 那天昧互,我揣著相機(jī)與錄音,去河邊找鬼伟桅。 笑死敞掘,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的楣铁。 我是一名探鬼主播玖雁,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼盖腕!你這毒婦竟也來了赫冬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤溃列,失蹤者是張志新(化名)和其女友劉穎劲厌,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體听隐,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡补鼻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片风范。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡咨跌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出硼婿,到底是詐尸還是另有隱情锌半,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布寇漫,位于F島的核電站刊殉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏猪腕。R本人自食惡果不足惜冗澈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一钦勘、第九天 我趴在偏房一處隱蔽的房頂上張望陋葡。 院中可真熱鬧,春花似錦彻采、人聲如沸腐缤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岭粤。三九已至,卻和暖如春特笋,著一層夾襖步出監(jiān)牢的瞬間剃浇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來泰國打工猎物, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留虎囚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓蔫磨,卻偏偏與公主長得像淘讥,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子堤如,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容