Unity 使用Plugins接入安卓SDK 基礎篇


 

一.須知

本帖適合對安卓一點基礎都沒有,有一定Unity基礎。剛剛接完一個某文檔很簡單的渠道SDk,也當是自己總結一下。

二.Unity中的目錄創建與理解。

Plugins:插件目錄,該目錄再編譯項目的時候會優先編譯,方便項目中代碼調用。

Android:規定必須這樣寫,規范跟Eclipse中安卓保持一致。只有這樣寫才會被調用到。

bin:存放自己編寫的Jar包,注意,是自己編寫的Jar包。(其實也可以放到libs中目錄,我測過了,不是很重要吧)

libs:第三方編譯的包放在這里,一般,

Eclipse中這個包需要拖進去。(后面會講Eclipse)。

 

三.Eclipse中需要執行的操作及講解。

1.Eclipse創建工程。

1)依次點擊  File->New->Android Application Project

2)

A:這是項目的名字,這個自定義。

B:這個是包名,一定要記得,需要跟Unity中  點擊File->BuildSettings->PlayerSettings ->OtherSettings

 與這個名稱必須要一模一樣。

(這邊補充一下,Unity中還需要做這個操作)。

C:最小的SDK版本要求,這個操作很重要,一定要選,我對sdk版本也不是很熟,具體選哪個,你就跟着我選這個吧。具體為什么我

也不清楚,想了解的話可以參考這篇帖子。http://blog.csdn.net/zhangjg_blog/article/details/17142395

3)

 說明:這里,我們只需要關注這4個目錄,之后會慢慢解釋。其他目錄,我不懂,不管,我們這里,完成在Unity中接sdk。

A:在這里寫自定義的方法,也就是與Unity直接交互的地方。

在Eclipse中寫代碼,寫與Unity交互的地方主要也就在這里了。

B:存放第三方Jar的包,也是需要導到Unity Libs文件夾下的Jar,但是Classes(從Unity文件夾下復制過來的jar),這個不需要導,

因為Unity中已經存在。

C:Eclipse 中工程資源目錄,比如放一些小圖標之類,一般也是需要全部烤到Unity Android目錄下的。

D:這個AndroidMainfest.xml很重要,后面講。

 2.Eclipse 工程 中具體操作(核心)

1).導入Unity中的一個Jar包,實現Unity中腳本與Eclipse中的腳本交互的橋梁。

找到Unity安裝包中的,

Unity533\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes

把classes.jar拖入到Eclipse中 成這個樣子了。

2).點擊 src->com.djw.testmydemo->MainActivity.java 

把修改成這樣,被我注釋掉的代碼,是系統內置的代碼,可以注釋掉,我們不去浪費精力了解,目的,搞定Unity與安卓的交互。

 

 圖中標識,就是改動的地方,一定要把extends Activity =》改為extends UnityPlayerActivity,

也就是因為之前導入了Unity中的classes.jar,在這里才能有import com.unity3d.player.UnityPlayerActivity,

才可以繼承UnityPlayerActivity。這里為啥需要這么做,原理我也不是很懂,我是站在Unity程序員角度接觸安卓的,沒有必要再深入了。

但是需要理解:這樣做,安卓才可以和Unity互相交互。

代碼中ToEclipse方法就是我們需要在Unity中調用的方法,純測試。

3).一些小坑,Eclipse中注意的地方。

如果發現你的Eclipse代碼報紅。

Ctrl+s,這個必須的。

Eclipse 中 點擊 Project->Clean,再勾選上Build Automatically(選中的話每次保存以后就自動編譯)。

網上解釋:由於eclipse每次保存都是基於時間戳的判斷機制,當build的時候,eclipse會認為時間戳沒有改變的類不會被編譯。

因此需要clean一下再編譯。這個時候eclipse會將所有的以前編譯信息清除然后編譯。

 

四:導出Eclipse中的文件到Unity

導哪些及怎么導?

1)jar包(具體哪些jar包)

I.

II.

這里,我們只導出自己編寫的腳本打包成jar,注意Browse(導出地址),Finish。

III.還需要把

這里,只需要把android-support-v4.jar 拖到Unity的 libs目錄中,zmsdk.jar,這個包是第三方,如果你們有使用,

就把他導到Unity的 libs。但是我們這里是測試,你們是沒有這個文件的,我只是演示。classes一定不要導。

 

補充:導出的方式很多種,可以一次性把所有的都導過去等等吧。不止我這一種,因為對其他我也不是很理解,

我不是專業搞安卓的,只是用到哪些跟Unity相關的,我就導出哪些。用哪些,導哪些。

 

2)AndroidManifest.xml

直接拖拽到Unity 中 Android目錄下即可。

3)res

如果有使用到res,就拖拽到Android目錄中,這里我們的Androidifest.xml有使用到res中的圖標,所以,全部拖拽到Unity中。

 

最終:

      

補充:如果這里有第三方jar則導到libs中。

 

五:AndroidManifest.xml 解釋

Android系統重要文件,主要涉及申請權限及定義配置文件,通過他可以實現向系統預先定義和申請應用程序運行所需要的權限。

聲明應用程序所必須具備的權限——如獲取相機權限、WiFi權限等
聲明程序的入口
指定應用程序所使用的SDK版本
指定應用程序會使用到的庫文件
設定應用程序的硬件或一些屬性——屏幕大小、是否支持旋轉屏幕等

 

舉例1:假如你刪掉  框中這句話,則Eclipse中res不用導到Unity中。

因為刪掉這句話,就沒有調用res中的資源。

舉例2:如果你的項目中有需要跳轉到另外一個URL,即,有跳到其他網頁上。需要加權限

...省略...
</application> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

六.Unity中使用C#與Eclipse中工程通信

   AndroidJavaClass jc;
    AndroidJavaObject jo;
    public void OnTestClick() //自己設置一個按鈕,點擊觸發
    {
        jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
        jo.Call("ToEclipse");
    }

注意  ToEclipse 就是安卓中的MainActivity中的方法,至於還有一些靜態方法如何互調之類,上面這個是固定用法,

具體理解,推薦一篇文章,我這篇博客比較偏向於具體步驟,而非原理。原理這篇博客相對比較好很多。

http://blog.csdn.net/yang8456211/article/details/51331358

 

補充:這樣,第一篇步驟篇,算是寫完了,后面應該還會出一篇具體加入第三方jar的步驟。

最后,感謝百度,還有一些技術博客的博主們,感謝他們的博客,知識,分享才是快樂的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM