從零開始實現Unity與Android的互動(一)
之前有SDK接入方面的需求,涉及到一些Unity與Android和iOS原生互動,雖然關於這方面的教程網上有不少,但第一次接觸還是遇到不少問題,這裡有很多坑與程式設計無關,很大一部分是配置不當造成的。在此記錄下來,做個備忘,也方便後來人學習。
第一步:環境搭建
下面是你需要用到的一些工具:
1.AndroidSDK
2.JDK
3.eclipse
上面的AndroidSDK,與eclipse直接解壓即可,JDK直接下一步安裝,這裡需要注意的是JDK與elipse,要麼都是32位,要麼都是64位,本文使用的均為64位 (JDK裝完以後可以在cmd中輸入java -version來檢視版本資訊)
當JDK裝完以後,開啟eclipse,我們需要安裝ADT外掛,否則你是不同建立Android工程的,開啟 Help -> Install New Software 如圖:
Name: ADT (你也可以叫別的,隨意)
Location: http://dl-ssl.google.com/android/eclipse/ (此處需要翻牆,請自掛VPN)
全選,Next,然後等安裝完畢。安裝完成之後會提示你重啟eclipse,重啟之後會提示你填寫AndroidSDK路徑,如下圖
點選 Open Preferences , 如果你沒有上面這一步,你也可以從Windows -> Preferences 中打開面板,並在左側選中Android選項,如圖
第二步:建立JAR檔案(供Unity使用)
以後設定完畢之後,你就可以建立Android工程了,File -> New -> Project -> Android -> Android Application Project
我們在MainActivity.java中注掉一些我們不需要的程式碼,並新加一個函式
你發現程式碼報紅了,原因是我們要繼承的UnityPlayerActivity,和要使用的UnityPlayer都來自Unity的Jar包(classes.jar檔案),它存放在:
D:\Program Files\Unity5.3.6\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes
(把D:\Program Files\Unity5.3.6,換成你的安裝目錄)
然後把classes.jar拖入eclipse工程的libs目錄下(如果沒有可以的動新建一個)
經過上一步,你會發現報紅沒有了,接著我們就要匯出jar包了 File -> Export -> Jar file
此處一定要選第二項,否則unity打包APK的時候可能會報錯,如果這麼做,Unity還會報錯的話可以,滑鼠選中bin,右鍵Show In -> System Explorer 然後進入bin\classes\com\example\jartest 資料夾下,把除了MainActivity.class檔案以外的所有檔案都刪了,再生成jar包。(此處重中之重,困擾了我很久,)
第三步:設定與編寫Unity程式碼
Unity專案中新建Plugins->Android,將Android工程的AndroidManifest拖進去,然後新建bin,把生成的jartest.jar拖入,把res和libs從Android工程中拖入(在Unity中的libs中刪除classes.jar檔案,重中之重!)
這裡說明一下Android工程中的UnityPlayer.UnitySendMessage("Main Camera", "AndoridCallBack", "hello world [Android]");
第一個引數,是Unity中繫結的GameObject,第二個是函式的名稱,第三個是自定義引數,這個API是Android訪問Unity用的。
第四步:生成APK與真機除錯
這裡的關鍵是Unity的BundleId要與Android工程的一致
最後我們用adb工具來聯機除錯檢視輸出
至此,Unity與Andorid的互動終於完成了。但是還有一些問題,比如AndroidManifest是做什麼用的,具體怎麼配置,如果有多個jar包,Unity又該怎麼呼叫。BundleId填誰的,下一篇文章會詳細介紹!