1. 程式人生 > >【Unity3d】Unity5與Android互動通訊(使用Android Studio2.4)

【Unity3d】Unity5與Android互動通訊(使用Android Studio2.4)

摘自CSDN作者,網址:http://blog.csdn.net/u010377179/article/details/53105062#comments(如有侵權,聯絡刪除。謝謝!)

現在網上的Unity與Android通訊的教程,要麼是Unity版本不是較新的,要麼使用的是Eclipse配置Android。寫這篇博文主要是簡單說明一下Unity5.3.6和Android Studio2.4的配置,來完成Unity指令碼(C#)與Android指令碼(Java)的互動通訊。

本篇主要講解搭建Unity與Android互動通訊的環境,以及如何在Unity指令碼中呼叫Android工程中的方法。

假設你已經瞭解了Android Studio建立工程的操作,並且配置好了Android Studio的環境和Unity匯出apk的環境,我使用的是Android Studio 2.4版本和Unity5.3.6版本,算是當前最新的版本了。

1、首先將Unity建立一個Android工程,例如我的工程名是:01_Unity_Message,如下是Project檢視下的目錄。

2、新建庫模組——Android工程是由模組組成的,每一個模組可以建立一個應用,切換到Android檢視下可以看到每一個模組。因為Unity與Android通訊主要是呼叫了各自的方法,因此在Android工程中我們可以單獨新建一個模組作為庫模組,來負責與Unity的互動內容。


新建模組操作:




點選Finish按鈕,然後稍等片刻,就會創建出新的模組,我們作為一個庫模組來使用,如下圖:

3、將Unity的jar包(class.jar)匯入到新建的庫模組中,首先說明:

首先找到class.jar檔案,它的路徑在Unity的安裝路徑下,例如我的是在:

D:\Program Files (x86)\Unity5.3.6\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Development\Classes,

然後會發現只有一個classes.jar檔案。

這裡注意兩點:

(1)、這個路徑是新版的Unity下的路徑,以前版本的jar檔案是在

\Unity5.3.6\Editor\Data\PlaybackEngines\AndroidPlayer\Release\下;

(2)、Unity路徑下有兩個classes.jar檔案的不同路徑,一個是在

Unity5.3.6\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Development\Classes下。

將jar包匯入庫模組的操作如下:

4、因為新建的庫模組中沒有MainActivity.java,我們可以理解為啟動這個模組的java類,例如在初始的app模組中就有一個MainActivity.java。因此需要新建一個MainActivity.java的檔案,並且呼叫Unity包中的基類,具體操作如下: 點選Finish後,會在庫模組的中創建出一個MainActivity的類,如下圖:

注意:生成MainActivity類後,會在res/layout下生成一個xml檔案:main_layout.xml。這個檔案是一個佈局檔案,

因為我們的庫模組是為了跟Unity互動的,不需要介面佈局,所以為了防止後面發生錯誤,這裡刪除掉這個檔案:

注意:要修改AndroidMainfest.xml檔案,如下: 然後仿照初始的app模組中的AndroidMainfest.xml檔案,將裡面的部分複製到庫模組的AndroidMainfest.xml的相同位置。如下: 然後需要修改一下MainActivity這個指令碼,操作如下: 5、下面就是在Android中編寫Unity要呼叫的方法了,例如我這裡只寫一個簡單的兩數求和的方法: 6、Build庫模組,然後將生成的配置檔案匯入到Unity工程中,操作如下:

然後稍等片刻,編譯中....

然後在Project檢視下,找到編譯生成檔案的所在目錄unity_exchange/build/intermediates/bundles/debug,

右鍵後開啟所在資料夾

然後把debug資料夾下的classes.jar檔案移動到libs資料夾中,並且把libs資料夾中的classes.jar檔案替換掉。 然後將debug資料夾下的libs資料夾、res資料夾、AndroidManifest.xml檔案匯入到Unity的Assets/Plugins/Android資料夾下 (沒有這個資料夾需先建立)。

注:奇怪的是,debug資料夾下找不到AndroidManifest.xml,什麼鬼??經本人親自摸索測試,發現AS新版本
在該資料夾下找不到檔案AndroidManifest.xml,而AndroidManifest.xml存在於如下圖所示檔案下,OK,解決。

然後將三個檔案移動到Unity的plugins/Android資料夾下。

7、建立Unity的C#指令碼,並掛載到MainCanera上。為了在真機測試時能夠看到求和的結果,

這裡我使用的是UGUI的Text來顯示結果,同時通過Button的按鈕來觸發求和方法。如下圖。

以下是主要的指令碼程式碼。呼叫Android中的方法,並將求和結果顯示在(Text)介面上。

將指令碼掛載到MainCamera上

8、Unity編輯器不能執行與Android相關的操作,所以需要匯出apk檔案到真機上測試。

注意:匯出前要修改PlayerSettings相關配置。因為從Android工程中匯入了一個AndroidManifest檔案,

這個檔案中有Android工程的相關配置,例如工程名稱、工程的包名、最低SDK版本、執行的Activity等等。

因此我們要在Unity匯出apk前修改一些相關配置,主要修改的是包名,如下圖:

最後是匯出apk包到手機上或虛擬機器上測試即可。我的測試截圖如下:

特別提醒:如果使用Android工程中初始的app模組來與Unity互動,需要修改部分配置。build.gradle檔案中,

將applicationId刪除,然後將apply plugin後面的內容修改為"com.android.library"。如下圖:

不建議大家使用初始的app模組,而是新建一個專門作為互動的Library模組。