1. 程式人生 > >Unity接入百度地圖SDK

Unity接入百度地圖SDK

本來以為很簡單的接入SDK,斷斷續續弄了將近一週,基本看遍了國內外大大小小的網站,國內比較出名的兩篇教程:

參考上述兩篇,其中流程和做法基本都是正確的,只是原理和細節還是沒有說清楚,導致很多人接入SDK時紙質其然而不知其所以然,所以我還是把我這一個星期踩過的坑都記錄下來,希望下次遇到同樣的問題有個參考。 這篇文章最後實現的功能:開啟應用後首先出現Unity的場景,點選場景中的一個Button按鈕後彈出百度地圖介面。 Eclipse環境搭建等見上一篇文章,這篇主要講兩塊配置:Android和Unity. 1.Android方面配置(我選用的是Eclipse) 1)首先建立安卓工程,這裡注意的是minimum Required SDK應該選用4.0不然後面會報錯。

 2)複製百度地圖SDK下的libs資料夾(注意這裡兩篇文章都說要匯入Unity的Class.jar,其實是看需求的,我用了一箇中間層來專門寫介面,所以暫時不用UnityPlayerActivity這個類)複製進來後如下圖:這裡特別注意:把v8a和x86_64兩個資料夾刪掉,不然到Unity裡會報錯,三個資料夾名字分別代表不同手機的CPU型別,x86_64是代表64的平板。

 3)寫兩個類,一箇中間層類【MainActivity】用來寫介面呼叫百度地圖的Activity,一個是百度地圖的類繼承Activity,因為這個是百度地圖的介面類,遵循Activity的生命週期,要在onCreat鉤子方法中初始化百度地圖介面。 z3
BaiduMap類: z4 注意寫幾個Log方便檢視Logcat,之前一直用ADB檢視日誌發現很多log不詳細,比如window彈不出來它就只報WindowChangeFales. 4)配置AndroidManifest.xml,這裡注意:改成你的包名,並新增BaiduMap這個Activity,還有你自己的Key和一些許可權,還要注意將Unity的Activity設定為主啟動,雨鬆的部落格以及他的衍生部落格均是把繼承了UnityPlayerActivity的MainActivity設定為主啟動,然後也不加Unity的Acitivity直接就複製進Unity中Plugins-Android目錄了,這樣導致的後果就是先啟動Android介面了。
我這裡之所以沒有加入MainActivity是因為他只不過充當一箇中間層,也沒有繼承Activity,只有BaiduMap這個類是繼承Activity的。這裡不要只抄雨鬆他們的部落格,要知道你自己的需求和原理,他們也都是提供參考和引導。 z2 5)到處jar包,直接右鍵專案-Export-Next,直選中scr資料夾,然後匯出就行了,好多部落格在這裡講的都很亂。 至此Android這塊的配置全部結束。 2.Unity方面配置 1)將Android工程中的libs+res+AndroidManifest+baidumapapi_map_xxx.jar裡面的assets檔案
(有朋友開發到後面因為沒加這個包出錯)都複製到Unity目錄下,建立bin資料夾,將打包好的.jar檔案複製到bin資料夾下: 2)在Unity中編輯測試程式碼:  z1 3)釋出這裡要把包名與你Android專案中包名一致。   4)勾上Development Build然後Build and Run.這時你需要連上真機進行測試在Eclipse中開啟Logcat就可以檢視Log日誌了,要檢視自己設定的Log可以在左邊新增Filter,在裡面新增自己的Tag,例如我之前卡在初始化這裡,也可以在AndroidSDK-platform-tools目錄下使用命令:adb logcat -s Unity進行除錯(這種方法顯示資訊不全建議還是用Eclipse除錯)。   5)最終效果:點選按鈕後跳轉到百度地圖介面。