史上最全unity與xcode集成教程

unity版本:unity 5.4.3f1?

xcode版本:xcode 8

一蕴掏、導(dǎo)出unity項(xiàng)目

1.File->Build Settings->ios->Switch platform 切換為iOS平臺,

2.player Settings.....(這個地方設(shè)置錯誤會導(dǎo)致導(dǎo)入ios工程之后出現(xiàn)200+錯誤)

3.File->Build Settings->Build(保存為xcode文件)

--------我是分割線------------

二调鲸、合并unity項(xiàng)目(2種方式盛杰,一是把你的工程集成到unity項(xiàng)目,二是把unity項(xiàng)目集成至你的工程)

(一)藐石,將原工程集成至unity工程

1饶唤,將原工程直接拖拽到Unity生成的工程里,在Unity的工程上進(jìn)行開發(fā)贯钩。

2,將原工程的main.m文件办素、AppDelegate.h和AppDelegate.m文件刪除,若有pch文件,也可與Unity工程中的Pch文件合并后刪除(刪除相關(guān)文件前請先備份臼闻,合并后請檢查pch路徑是否正確)愕鼓。

3,此時程序的主函數(shù)入口為Classes/main.mm需曾,AppDelegate為Classes/UnityAppController.mm吗坚,程序的pch文件為Classes/Prefix.pch。將原工程的相應(yīng)代碼拷貝到相對應(yīng)的文件中即可呆万。

4商源,因?yàn)楝F(xiàn)在程序的入口在Unity工程端,所以原工程的主界面需在Unity工程運(yùn)行后(如下圖谋减,“showGameUI”方法調(diào)用之后)再添加到keyWindow上即可牡彻。

(二),將unity項(xiàng)目集成至原工程

1出爹,將unity與iOS工程放置與同一根目錄庄吼,將Unity工程中的`Classes`、`Data`和`Libraries`严就、‘MapFileParser.sh’文件夾復(fù)制到自己的工程根目錄总寻。

2,添加文件梢为,Data 選擇Create folder references渐行,Classes和Libraries 選擇Create groups轰坊。

3,在Build settings中設(shè)置Pch文件(如工程已有pch文件殊轴,請將兩個pch文件合并)衰倦。我的做法是,復(fù)制unity ?Classes中Pch文件中的代碼添加至自己的Pch文件中旁理,刪除classes中的Pch文件

4.復(fù)制Classes中的main.mm文件中的代碼樊零,刪除你的main.m中的代碼,粘貼過去孽文,刪除main.mm驻襟,修改main.m為main.mm;

5,在Build Phases新建運(yùn)行腳本語句Run Script

rm -rf "$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Data"

cp -Rf "$PROJECT_DIR/Data" "$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Data"

6.在Build settings中設(shè)置Header Search Paths?

$(SRCROOT)/Libraries/libil2cpp/include

$(SRCROOT)/Libraries/bdwgc/include

$(SRCROOT)/Classes/Native

"$(SRCROOT)/Classes"

7芋哭,在Build settings中設(shè)置Other C Flags

-mno-thumb

-DINIT_SCRIPTING_BACKEND=1

8沉衣,在Build Phases中導(dǎo)入以下庫(這里具體請查看導(dǎo)出的ios工程里面的庫,千萬不要重復(fù)導(dǎo)入)


9减牺,在Build Phases中將所有.mm文件(除了CameraCapture.mm,MetalHelper.mm,DisplayManager.mm文件)打上MRC標(biāo)簽豌习。

10.編譯真機(jī)運(yùn)行(此時運(yùn)行項(xiàng)目進(jìn)入unity界面)

-------------------我是分割線----------------

三、在iOS工程中打開unity項(xiàng)目 拔疚,(我們項(xiàng)目的入口為main.mm肥隆,main函數(shù)之后調(diào)用UnityAppController.mm,也就是以前項(xiàng)目的AppDelegate.m文件不調(diào)用稚失,可以刪除)


1.修改工程啟動方式栋艳,由先啟動unity視圖,修改為先啟動我們的ViewController

我們加入了一個myPageEnable變量句各,表示我們的myPage是否被啟動過吸占,如果啟動做,就不再重復(fù)執(zhí)行凿宾,注釋掉startUnity: 改為myPageEnable:如下圖矾屯。(此時,運(yùn)行項(xiàng)目會進(jìn)入我們自己的界面)

我用單利保存了當(dāng)前的application 和當(dāng)前的self,(用于以后點(diǎn)擊按鈕進(jìn)入unity)

這樣初厚,我們就實(shí)現(xiàn)工程直接先啟動我們的視圖问拘,其實(shí)總結(jié)一下很簡單,把APP的rootViewController修改成我們的惧所,并且停用原有Unity的相同功能代碼骤坐。

2.在iOS中打開unity界面

首先,unity一旦被打開下愈,我們是不需要徹底關(guān)閉掉的纽绍,當(dāng)從unity返回我們的View 時,將unity view暫停到后臺势似,并把window的rootviewcontroller設(shè)置為我們的rootViewController

我們已經(jīng)知道拌夏,啟動Unity的函數(shù)是

- (void)startUnity:(UIApplication *)application僧著,所以重新調(diào)用這個函數(shù)即可

在我們的控制器里面點(diǎn)擊按鈕(redpacketButton是紅包按鈕)打開unity:

注意一點(diǎn),startUnity方法只能使用一次障簿。多次調(diào)用同樣會導(dǎo)致應(yīng)用Crash盹愚,并報(bào)錯:“should not be reached at domain.c”,所以我們用restartUnity(這個方法寫在UnityAppController.mm中)

3.關(guān)閉unity界面(這里有兩種方法站故,一皆怕,調(diào)用unity中的back函數(shù)。二西篓,我們自己寫退出按鈕)

值得注意的是:在extern "C"中愈腾,不能用OC的self和self.window獲取到appController和window,必須使用UnityAppController對象提供的方法GetAppController()和UnityGetGLView()來獲取岂津。

3.1, 調(diào)用unity中的back函數(shù)(這個函數(shù)應(yīng)和unity開發(fā)人員溝通虱黄,統(tǒng)一命名),調(diào)用方法:

extern "C"? void back(){

//你的代碼

}

3.2 自己寫退出按鈕

Unity View啟動時在頁面中初始化一個我們實(shí)現(xiàn)寫好的關(guān)閉按鈕的UIView,按鈕點(diǎn)擊事件方法和上面一樣


-------------------我是分割線----------------

四吮成。Unity與iOS傳值

4.1 iOS發(fā)消息給unity

// 添加這句代碼橱乱,它負(fù)責(zé)向Unity傳遞參數(shù);(具體參數(shù)和unity開發(fā)人員協(xié)商)

extern void UnitySendMessage(const char *, const char *, const char *);

IOS調(diào)用Unity函數(shù)需要用到UnitySendMessage方法粱甫,方法中有三個參數(shù)

UnitySendMessage("gameobject", "Method",msg);

參數(shù)一為unity腳本掛載的gameobject(可以理解為具體的unity中某個對象或者物體)

參數(shù)二為unity腳本中要調(diào)用的方法名

參數(shù)三為傳遞的數(shù)據(jù)仅醇,注意:傳遞的數(shù)據(jù)只能是char *類型


4.2 unity向iOS 傳值,這個我沒有用到魔种,大家可以google ?網(wǎng)上案例很多。


結(jié)語

實(shí)用公眾號: 啊帥科技分享粉洼。免費(fèi)蘋果id节预,軟件,小飛機(jī)等属韧。

最近公司開發(fā)AR紅包安拟,寫出這個博客給大家作為參考。因?yàn)槭浅醪浇佑|unity,自己也翻越了很多資料宵喂,如果有錯誤糠赦,希望大家指正。后期會不斷更新補(bǔ)全集成中遇到的各種問題锅棕。

有疑問可以給我發(fā)郵件(或者QQ)拙泽,看到了必定回復(fù):1020351736@qq.com?

QQ群號:129018636

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市裸燎,隨后出現(xiàn)的幾起案子顾瞻,更是在濱河造成了極大的恐慌,老刑警劉巖德绿,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荷荤,死亡現(xiàn)場離奇詭異退渗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蕴纳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門会油,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人古毛,你說我怎么就攤上這事翻翩。” “怎么了喇潘?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵体斩,是天一觀的道長。 經(jīng)常有香客問我颖低,道長絮吵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任忱屑,我火速辦了婚禮蹬敲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘莺戒。我一直安慰自己伴嗡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布从铲。 她就那樣靜靜地躺著瘪校,像睡著了一般。 火紅的嫁衣襯著肌膚如雪名段。 梳的紋絲不亂的頭發(fā)上阱扬,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機(jī)與錄音伸辟,去河邊找鬼麻惶。 笑死,一個胖子當(dāng)著我的面吹牛信夫,可吹牛的內(nèi)容都是我干的窃蹋。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼静稻,長吁一口氣:“原來是場噩夢啊……” “哼警没!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起振湾,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤惠奸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后恰梢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體佛南,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡梗掰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嗅回。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片及穗。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖绵载,靈堂內(nèi)的尸體忽然破棺而出埂陆,到底是詐尸還是另有隱情,我是刑警寧澤娃豹,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布焚虱,位于F島的核電站,受9級特大地震影響懂版,放射性物質(zhì)發(fā)生泄漏鹃栽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一躯畴、第九天 我趴在偏房一處隱蔽的房頂上張望民鼓。 院中可真熱鬧,春花似錦蓬抄、人聲如沸丰嘉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饮亏。三九已至,卻和暖如春阅爽,著一層夾襖步出監(jiān)牢的瞬間路幸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工优床, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人誓焦。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓胆敞,卻偏偏與公主長得像,于是被迫代替她去往敵國和親杂伟。 傳聞我的和親對象是個殘疾皇子移层,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

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

  • unity版本 2017.1.1f1 Xcode版本8.2.1 (8C1002) 第一步 導(dǎo)出unity的Xco...
    野生塔塔醬閱讀 3,853評論 5 4
  • 關(guān)于unity導(dǎo)出工程與已有iOS工程合并網(wǎng)上面已經(jīng)有很多的教程,但是還是要記錄一下自己的經(jīng)歷過程。從最基本的說明...
    Mory閱讀 9,302評論 121 13
  • - 說明 參考網(wǎng)址unity導(dǎo)出工程導(dǎo)入到iOS原生工程中詳細(xì)步驟 我現(xiàn)在有兩個工程赫粥,一個是從unity中導(dǎo)出的i...
    Bob_Running閱讀 1,088評論 0 0
  • 整理最大的力量來自于通過整理這個外在動作改變自己的內(nèi)心观话。 如果整理的過程沒有讓自己的內(nèi)心有所觸動和變化,那么生活和...
    袁春楠閱讀 323評論 0 1
  • 我尋遍所有禮堂晦溪,都裝不下我那倔犟的信仰瀑粥。 有多少熾烈癡狂,最后變成了多少個夜深人靜的煙霧繚繞三圆。 過往歲月狞换,這壺酒,...
    姜牧之5373閱讀 231評論 0 0