unity接入安卓SDK,與安卓相互通訊
阿新 • • 發佈:2018-11-08
.接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 準備工作
- 安卓開發環境,因為我們需要擴充套件UnityActivity,並且將擴充套件過後的結果打成 .jar包放入Unity,所以,我們需要 Android Studio 或者Eclipse+ADT,作者使用的Android Studio3.01.(下載網址:http://www.androiddevtools.cn/ )
- SDK原始檔,這個看你需要接入什麼SDK,去官網下載即可。
- 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 }