最近因?yàn)楦』锇樵谥谱饕粋€(gè)App參加比賽鲸睛,由于有unity的開(kāi)發(fā)經(jīng)驗(yàn)挺尿,突發(fā)奇想的想要在Android應(yīng)用中內(nèi)嵌unity提供模型展示的功能翼雀。
為此饱苟,我們查閱了不少資料。大多發(fā)現(xiàn)的是unity中內(nèi)嵌Android的文章狼渊。Android內(nèi)嵌unity的似乎大多是從Android中導(dǎo)出Jar包再導(dǎo)入unity中開(kāi)發(fā)的箱熬,這樣似乎對(duì)于我們主要開(kāi)發(fā)Android應(yīng)用來(lái)說(shuō)有些繁復(fù)=。=于是后來(lái)跟小伙伴研究許久狈邑,發(fā)現(xiàn)unity可以export出Android的工程文件城须。
=.=于是打算寫(xiě)一個(gè)簡(jiǎn)易的說(shuō)明文字記錄一下,今后可能會(huì)再次用到米苹。
實(shí)現(xiàn)步驟如下
- 從unity中export出Android的工程文件
- 將Android工程文件中的asset下的bin糕伐、libs下的jar包、以及java代碼復(fù)制到所開(kāi)發(fā)的Android應(yīng)用的工程下的相應(yīng)位置
在Android工程中繼承UnityPlayerActivity類(lèi)蘸嘶,用于顯示unity場(chǎng)景的Activity
利用下列代碼將unity視圖添加到android視圖中
View mView=mUnityPlayer.getView();
mParent.addView(mView);
- 然后使用UnityPlayer的UnitySendMessage函數(shù)良瞧,向unity中的指定物體,調(diào)用指定的函數(shù)训唱,傳入指定的參數(shù)
UnityPlayer.UnitySendMessage(“Main Camera” , “setfdjxn” , “xxx”);
以上方法表示:第一個(gè)參數(shù)為物體名褥蚯,第二個(gè)參數(shù)為該物體組件上的函數(shù)名,第三個(gè)為函數(shù)的傳入?yún)?shù)况增。
- 最后成品如下:
圖二中的對(duì)應(yīng)數(shù)據(jù)字段傳入到圖一中了~
使用中出現(xiàn)的還未解決的問(wèn)題
我們?cè)谑褂玫倪^(guò)程中是從一個(gè)Activity跳轉(zhuǎn)到UnityPlayerActivity的
在這過(guò)程中赞庶,我們發(fā)現(xiàn)從UnityPlayerActivity返回到前一個(gè)Activity時(shí),出現(xiàn)了這個(gè)Activity在活動(dòng)棧中被清除了的情況
分析得到得到在啟用UnityPlayerActivity時(shí)澳骤,會(huì)將上一個(gè)Activity從活動(dòng)棧中清除
為了解決這個(gè)問(wèn)題歧强,我們?cè)谶@中間加了一個(gè)Activity,然而無(wú)法從本質(zhì)上解決問(wèn)題