有時(shí)候U3D 項(xiàng)目可能需要和Android項(xiàng)目交互,比如調(diào)用原生Android代碼暇榴,下面總結(jié)一下方法:
1厚棵、去你的Untiy3D 安裝目錄找到 \Unity\Editor\Data\PlaybackEngines\androidplayer\bin 下 ? ? 的classes.jar。
2蔼紧、將classes.jar文件復(fù)制到你的android工程下的libs文件夾下婆硬,右鍵單擊classes.jar選擇Build Path里面的Add to Build Path。
3奸例、將你的項(xiàng)目入口文件繼承 換成UnityPlayerActivity(UnityPlayerActivity只能作為Unity和Android交互的一個(gè)接口彬犯,在這里面再去調(diào)用其他的Activity)
4向楼、UnityPlayerActivity對(duì)外提供了一個(gè)方法接口,StartActivity3(String name)(方法名隨意命名谐区,C#調(diào)用對(duì)就行)這個(gè)方法是在Unity中使用C#腳本調(diào)用的湖蜕,意思是調(diào)用后程序?qū)⒋蜷_(kāi)一個(gè)新的Activity,參數(shù)name也是由C#腳本傳遞過(guò)來(lái)的宋列,接著將傳遞的String參數(shù)繼續(xù)傳遞給新打開(kāi)的Activity昭抒。
Call_phone.java與正常Activity一樣,接受Intent參數(shù)也一樣炼杖。比如傳過(guò)來(lái)是字符串就用getIntent().getStringExtra(“name”)接收(切記灭返!同樣需要在AndroidManifest.xml 注冊(cè))
5、Clean一下當(dāng)前工程坤邪,避免一些不必要的問(wèn)題熙含,然后在Build Project,當(dāng)前工程bin\classes文件夾中會(huì)生成代碼所有的.class文件艇纺。然后需要把所有的.class生成jar包怎静。WIN 下通過(guò) 運(yùn)行(win+R 快捷鍵)然后 輸入 cmd ?然后 cd到你的項(xiàng)目bin\classes目錄下,執(zhí)行? ? jar-cvf test.jar? *? (test.jar)為生成jar包名稱喂饥,test.jar 就好在你的bin\classes下生成消约。(還有一種方法是 直接用eclipse的Export導(dǎo)出jar,但是這樣會(huì)把都有文件都生成jar導(dǎo)致jar包變大员帮,所以還是選擇上面方式比較好)
6或粮、開(kāi)始創(chuàng)建Unity工程。Unity工程中文件夾的結(jié)構(gòu)如下捞高,Plugins->Android
然后將libs(需要用的第三方庫(kù)文件比如shareSDK 氯材。項(xiàng)目引用的classes.jar一定要?jiǎng)h除,否則打包失斚醺凇)氢哮,res文件夾和AndroidManifest直接從Android工程中拷貝過(guò)來(lái)。(有時(shí)候assets文件夾下也會(huì)放一些東西型檀,比如shareSDK的配置文件冗尤,也需要一塊復(fù)制過(guò)來(lái))。
7胀溺、Unity里面創(chuàng)建一個(gè)C#腳本文件裂七,上圖中的Shre.cs,綁定在MainCamera上(一定要2治搿1沉恪)
jo.call方法就是調(diào)用Android界面的方法 里面兩個(gè)參數(shù)(第一個(gè)是UnityPlayerActivity的一個(gè)方法名,第二個(gè)是傳遞的值无埃,就是把電話號(hào)碼以字符串形式傳給Call_phon.java)徙瓶。
8毛雇、點(diǎn)擊Untiy->? File? ->Build Setting ,選擇Android平臺(tái)。Unity中的包名侦镇,要和Android工程保持一致灵疮,否則無(wú)法調(diào)用。選擇Player Setting 虽缕,Bundle Identifier* 修改成和Android項(xiàng)目一樣的包名始藕。(我的項(xiàng)目包名為mygoalgroup.chunguang)
還有需要注意的是 一定要把Company Name和ProductName 改掉,不能使用默認(rèn)的 要不不能發(fā)布氮趋。
9伍派、發(fā)布 ?點(diǎn)擊 Build and Run ?在你手機(jī)上就可以看到效果了。