1. 程式人生 > >unity接入安卓SDK,與安卓相互通訊

unity接入安卓SDK,與安卓相互通訊

.接SDK是個什麼樣的活計?

SDK的工作流程:

1. 從unity端出發,向安卓發起一系列的請求(unity call android)。

2. 安卓端收到unity端呼叫,然後在具體呼叫SDK的一系列介面(android內部呼叫)

3. SDK伺服器處理之後得到結果,再返回給安卓(網路通訊)

4. 安卓獲得SDK結果,然後回撥unity方法,將結果傳回unity端(android call unity)

我們需要做的:

1. 在安卓端,將SDK整合進入 Android的 MainActivity(或者其他Activity),為Unity的呼叫做好介面

2. 將做好的安卓介面,打成jar包,以外掛的形式,整合到Unity中去,供unity使用

3. 編寫Unity端的呼叫 函式與響應函式,完成SDK接入。

2.unity 與 android 的通訊:

unity  Call android:

1 //獲取名為UnityPlayer的類
2 AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
3 
4 //獲取當前執行的Activity
5 AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
6 
7 //呼叫UnityPlayer類中的函式
8 var result = jo.Call<返回結果型別>("函式名稱","函式引數1","函式引數2",……);

android Call unity:

UnityPlayer.UnitySendMessage("場景中GamObject名字","該Obj身上指令碼的一個方法名",返回值(字串型別));

3.實際操作

3.1 準備工作

  1. 安卓開發環境,因為我們需要擴充套件UnityActivity,並且將擴充套件過後的結果打成 .jar包放入Unity,所以,我們需要 Android Studio 或者Eclipse+ADT,作者使用的Android Studio3.01.(下載網址:http://www.androiddevtools.cn/ )
  2. SDK原始檔,這個看你需要接入什麼SDK,去官網下載即可。
  3. Unity 的Android classes.jar檔案,這裡面定義了unity 在安卓中的各種行為,我們在編寫程式碼的時候,需要用到這裡面的介面。(路徑為:\Editor\Data\PlaybackEngines\androidplayer\release\bin\classes.jar  

3.2開始建立Android工程

  

 

 問題:

1.Conflict with Dependency

1 Error:Execution failed for task ':app:preDebugAndroidTestBuild'.
2 > Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (26.1.0) and test app (27.1.1) differ. See https://d.android.com/r/tools/test-apk-dependency-conflicts.html for details.

解決方案

//在build.gradle(Module:App)檔案的dependencies中新增如下程式碼

  androidTestCompile('com.android.support:support-annotations:26.1.0') {
        force = true
    }