天天看點

Unity3D移植到自己的Android程式

用Unity3D開發需要把動畫效果移植到現有的APP上面。Unity for Android 比較特殊,Unity for IOS 打包是将XCODE工程直接交給開發者,開發者可以在工程的基礎上繼續添加新的視圖,最後由開發者自行打包生成IPA包,釋出程式。而Unity for Android打包直接生成APK包,等于說源代碼開發者是看不到的。試想下,人家既然能打包成APK安裝包肯定是走了android-sdk的打包流程,有這流程我們自然能拿到源碼(即便是反編譯)。研究了一會兒,發現其實很簡單,寫了一個小DEMO放上來。所有操作如下

首先建立一個android工程,這個很簡單就不詳細說明了。然後打開Unity的安裝目錄,找到需要用的class.jar檔案,就是封裝調用unity引擎的java源碼,位置在Unity\Editor\Data\PlaybackEngines\androidplayer\bin\classes.jar(安裝目錄),然後複制這個檔案到android工程的libs目錄,系統會自動引用,adt22以下不記得會不會,如果不會的話需要自己設定一下,右鍵工程

添加這個檔案即可。

然後把MainAtivity稍微改一下,就是把繼承父類改成UnityPlayerActivity,這樣就對接上了unity接口,源碼如下:

  

為了顯明觀察顯示,布局稍微改動了一下。把這個顯示在我們的視圖上。

activity_main.xml

配置清單檔案,這個裡面的包名要用到後面Unity的

android基本上就完成了。現在建立一個Unity工程,名字啥的随便取,然後在菜單File->Build Settings->Android->Player Settings

最後生成的APK檔案我們直接解壓,把裡面的assets目錄下面的data目錄複制到我們工程的assets目錄下,然後把lib目錄下的armeabi-v7a或armeabi一起複制(如果都有的話,隻有其中一個就複制一個即可),最後編譯我們的程式,運作效果如下:

白色是我們的布局容器,藍色就是unity視圖内容了。

下面繼續說下在Unity中調用Andriod的函數,在Unity工程中建立一個C#腳本,直接将它綁定在錄影機中,它用來通知界面打開Activity。如下圖所示,利用GUI在螢幕中建立兩個按鈕,點選按鈕打開不同的Activity。

以上代碼就是Java裡面的反射機制。

繼續閱讀