java程式員圖文並茂細說Unity中調用Android的介面

來源:互聯網
上載者:User

標籤:idp   直接   總結   roi   執行個體化   傳遞   方法   jar包   oncreate   

http://bbs.csdn.net/topics/391876421

最近做一個項目,為同事提供介面,能使他在Unity中調用Android中的函數來實現QQ登陸並擷取使用者資訊。按照一些書上和一些貼吧的東西弄了幾天,有時候邏輯雖然都走通了,但是有時候還是會出一些問題,現在就將出現的一些問題做一個總結。
1、開發工具Unity3d eclipse,雖然android目前的開發已經普遍使用android studio但是這裡建議你使用eclipse
2、言歸正傳,首先我們要定義android的介面,在建立介面之前,我們首先來建立項目。(這裡針對沒有使用過eclipse的同學)

3、配置最小的SDK和最大的SDK和編譯的SDK(為什麼要配置這個,簡單理解一下,就是隨著android作業系統的不斷升級,發布給開發人員的api也隨著升級,高版本SDK的某個新功能(介面)可能在低版本作業系統上用不了,進行一個容錯性提示)。
為了保證package唯一最好是你們公司的網域名稱倒序+項目名稱,比如Google 就是google.com.test



4、一路狂奔到完成,在下面的介面,可以勾選Make is Libray(如果你的介面很複雜,可以暫時不勾選,使用Eclipse調試完畢後,打包的時候修改為選中,不會可以百度)

5、在定義介面之前,先簡單說一下Activity,在建立完項目的時候,系統已經提供了一個Activity,預設的類名叫MainActivity,並且在androidManifest.xml已經配置為主Activity,程式一運行,首先就會建立這個Activity的執行個體,並且調用其生命週期方法。
Activity和普通的java類不同,他不能用new去執行個體化,只能由系統去建立。如果你去new他就是一個普通的java類,如果項目中有多個Activity,其他的Activity要想執行個體化,必須直接或者間接依賴MainActivity,他就好比一個入口。
在Unity指令碼中,也只能擷取MainActivity的引用.(如果上面的看不懂可以往下看6)
6、由於程式一啟動,首先建立MainActivity的執行個體,並且回調onCreate()等方法。我們的Unity的主介面是靠scene去渲染,所以刪除MainActivity中setContentView();並且將繼承關係改變。
    6.1:加入Unity提供的一個jar包(jar包的本質就是一個class庫),jar包的位置在安裝目錄下面的Editor\Data\PlaybackEngines\androidplayer\development\bin(根據自己的實際位置找),classes.jar。
  
   6.2:使用非打包的形式加入jar包。(不要將classes.jar直接複製到libs下面去)
 選擇項目/preferences/Java BuildPath../Library/Add External Jars

  6.3:刪除不用的代碼,改變繼承關係.(一定要刪除setContentView,因為他的介面是由Unity Scene提供)

7、增加方法(讓其被Unity調用),這裡我們就定義一個輸出土司的一個方法,非常簡單,Unity傳遞一個String類型的參數name,就可以輸出土司Hello :name

8、再增加一個方法,能讓他進行Activity的跳轉。跳轉之前我們講一下Activity的建立。
  8.1:我們先建立 一個類。
   
   8.2:增加其繼承關係,讓他繼承Activity 類並且重寫其onCreate()方法。
  
   8.3:定義完畢的Activity類只是普通的java類,我們要在AndroidManifest.xml進行配置,讓其成為一個Activity
  注意是在Application節點下面配置

  8.4到此Activity就配置完畢了,我們的Android程式就由2個Activity組成,第一個Activity的介面由Unity Scene到時候提供
第二個Activity是預設介面,下面我們修改SecondActivity的介面
  8.5:設定介面調用setConetentView();
 
 8.6:修改一下這個介面,android中的介面其實就是xml檔案,通過樹狀結構管理View的層次
 可以在視圖模式下拖拽組件,但是不是很好用 。

  8.7到這裡我們SecondActivity的定義,配置,布局已經設定完畢。接下來我們在MainActivity中定義一個方法,用來在Unity調用,進行跳轉
9.MainActivity定義一個方法,跳轉到SecondActivity,很簡單,就一個跳轉


10、到此android的介面定義完畢,在打包之前,還需要幹一些事情,這些事情如果不做,打包的東西有可能無法被調用
    10.0:修改項目Make is Libray 
    10.1:在Project菜單下 取消Bulild Autocomplie(自動編譯)
    10.2 :clean一下項目
    10.3: Build Project一下項目


11.打包我們Android項目,按道理來說,打包的東西只需要class就可以,但是我們的項目中除了自己的class還有自動產生的
gen目錄下面的東西,還有其他資源,為了不遺漏,乾脆全部打包。res AndroidManifest.xml也被打包,這些只不過是垃圾而已。




12.到此Android的介面已經定義完畢。接下講來如何在Unity中調用


1、建立Unity的應用

2、在Assets下面定義Plugins\Android檔案夾

3、在Android下面定義bin 將11步產生的jar包加入bin,並且把項目中的res,assets,libs ,AndroisManifest.xml複製到Android目錄下,這些都是Android的資源。

4、複製完畢後
最後的目錄結構


5、稍微修改一下AndroidManifest.xml
 5.1開啟安裝路徑下Editor\Data\PlaybackEngines\androidplayer\AndroidManifest.xml,

把裡面紅色部分複製到我們程式的AndroidManifest.xml中,copy完畢後


6.Unity中編寫代碼調用MainActivity中的函數


7、編譯成apk
注意buildsetting設定一下


8、好了,我們把編譯好的程式運行一下

java程式員圖文並茂細說Unity中調用Android的介面

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.