再談Unity調用Android的Activity

來源:互聯網
上載者:User

標籤:unity   android   

這段時間在研究Unity4.3開發環境下,如何調用由Android SDK4.4.2寫的Activity。參考了很多網上的部落格,百度出了幾十篇大部分都是轉載雨松MOMO的,這裡必須向雨松MOMO表示敬意!但雨松MOMO寫的部落格太舊了,不少內容已經過時,我嚴格按他說的步驟進行,還是出了問題,所以本部落格就是告訴大家在Unity4.3+Android SDK4.4.2環境,起動Activity的細節。

我這篇部落格不會從零講起,所以首先給出兩個重要的連結,大家應該看一下:

第一個是雨松MOMO的  http://www.xuanyusong.com/archives/667  這篇部落格的概念是正確的,但操作過程已過去

第二個是一個比較新的部落格  http://www.narkii.com/club/thread-320335-1.html  這篇部落格的概念和操作都是正確的,但細節有所省略,重點不夠明確,我的部落格即是對它的補充。


步驟:

1:開啟Eclipse,建立一個Android工程,注意,要麼在建立時選擇建立庫,要麼建立之後在工程屬性的Android頁面勾選Is Library。

2:在工程屬性中的Java Build Path -> Libraries中,用Add External JARs按鈕,把Unity的classes.jar加進來,比如我的Unity是裝在D盤,則路徑是:D:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer\development\bin。

3:寫兩個Activity,A和B,實現在A中啟動B。這個過程可以參考上述推薦的部落格,他們講的很詳細,我這裡只是強調一下,A需繼承自UnityPlayerActivity,而B則只需繼承自Activity。

4:編譯Android工程,會在bin目錄下產生一個XXX.jar檔案,注意,這個jar只有2k左右大小是不能用的,原因是很多class沒有包含進去,比如很重要的R.layout.class。編譯完了後必須使用Export匯出,並選擇正確的打包項才會產生一個100-600k大小的jar,這一點雨松MOMO沒有講。下面是我選擇的打包項:


5:至此,Android部分基本OK。開啟Unity建立一個Project,在Assets\Plugins\Android下面,把剛剛產生的jar拷貝過來,另外還有res檔案夾。

6:到Unity的安裝目錄下D:\Program Files\Unity\Editor\Data\PlaybackEngines\androidplayer找到AndroidManifest.xml,將其拷貝到Unity工程的Assets\Plugins\Android目錄下,然後修改它有兩個地方要修改,1是把package改為你的android工程的包名,2是把<activity android:name=這句等號後面的內容改為你的Android工程的主Activity的名字,比如我的:

<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.unitytestactivity"
android:installLocation="preferExternal"
android:theme="@android:style/Theme.NoTitleBar"
    android:versionCode="1"
    android:versionName="1.0">

..........

..........

<activity android:name=".UnityTestActivity"
                android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">

注意名字前的點。第二句表示啟動時不顯示Title,這個問題曾折騰我很久。第三句直接拷貝。

7:寫Unity下的指令碼cs檔案,這裡沒什麼好說的,參考雨松MOMO。

8:Unity的Build Setting注意把Bundle Identifier改為你的Android工程的包名。

9:注意,從Unity中啟動一個Activity的功能無法在Unity中類比運行,必須安裝到真機中才能看到效果,我曾傻傻的並鬱悶的試了好久。估計後續的Unity版本會改進這個問題。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.