標籤:
本文屬於「Unity與iOS、Android平台的整合」系列文章之一,轉載請註明出處。
Unity預設匯出的是Android-Eclipse工程,畢竟Eclipse for Android開發在近一兩年才開始沒落,使用者量還是非常巨大的。
個人認為AndroidStudio非常好用,能輕易解決很多Eclipse解決不了或者很難解決的問題。
所以我將Unity匯出的Andoid工程分為Eclipse和AndroidStudio兩部分。
不過我之後的相關內容都會使用AndroidStudio,希望依然使用Eclipse的同學儘快跟上~
本文主要講解Unity匯出的Android-Eclipse工程的目錄結構。
話先說在前面,這篇文章和「Unity」與iOS、Android平台的整合:1、匯出的Xcode工程 非常相似,我建議手遊開發人員將兩篇結合起來看~
我所用軟體的版本:
Unity 5.3.5f1
Eclipse 抱歉。。我現在只用AndroidStudio
前置步驟
第一步,建立一個新的工程 Build_to_iOS_Android
第二步,建立Plugins/Android/libs/Jar.jar
Plugins/Android/libs/x86/CPP_Native.so
Plugins/Android/libs/armeabi-v7a/CPP_Native.so
StreamingAssets/ALL_EmptyTxt.txt
//創一個空檔案,直接改名就好了,現在是簡單樣本而已~
第三步,儲存一下情境,如
第四步,開啟PlayerSettings,修改Bundle Identifier(包名),Unity裡面不修改不讓匯出Android的~
第五步,選擇Android平台,Export匯出Android工程
第六步,開啟所匯出Android工程的檔案夾
進入正題
1、程式入口
任何程式都有一個入口,Unity匯出的Android工程中也不例外,通過我們可以看到,在AndroidManifest.xml檔案中,將UnityPlayerActivity設定為應用的入口。(AndroidManifest.xml是Android的設定檔之一,具體請自行搜尋~)
通過我們可以看到,UnityPlayerActivity是繼承了Activity,至於它是什麼我就不贅述了,大家可以看一下這一篇文章:Activity詳解(生命週期、以各種方式啟動Activity、狀態儲存,完全退出等)
為一個Activity的生命週期,我們可以看到系統事件存在著非常有用的監聽,在UnityPlayerActivity.java裡面我們也可以看到對應的函數,這意味著在Unity中一樣可以收到這些事件,以後我們將繼承UnityPlayerActivity,並重寫這些監聽。
2、C# -> C++
這就是個很尷尬的問題了,現在5.3.5的版本還不支援在Android平台下使用IL2CPP的模式,但是5.4的版本已經可以支援了,這一點我打算等5.4的版本出了再補上~
3、資源 StreamingAssets -> assets
Unity匯出Android工程後,原工程中的各種資源都被壓縮、打包、加密後存放在assets/bin/Data檔案夾中,見,這一點和iOS是一致的,網上也有很多資源解密的方法,大家有需要可以自行搜尋。
我們重點說一下Unity中的StreamingAssets檔案夾,關於這個檔案的作用,大家可以看一下這篇文章:Unity3D研究院之手遊開發中所有特殊的檔案夾
通過我們可以看到,StreamingAssets檔案夾中的ALL_EmptyTxt.txt檔案被完整地拷貝到assets檔案夾中,實際上不光是檔案,檔案夾也會原封不動地拷入該檔案夾。
至於這有什麼用,比如說,設定檔放在這裡,上手機調試的話可以在Android工程中直接修改配置,而不需要到Unity裡重新匯出Android工程。
4、 Plugins/Android -> libs
Plugins/Android檔案夾中通常會放一些*.jar、*.so檔案,這些檔案是什麼、有什麼用,大家可以看一下官方的文檔:Building Plugins for Android
這些檔案將拷貝至在Android-Eclipse工程的libs檔案夾中,在Android編譯時間也將被編譯。
5、unity-classes.jar、libmain.so、libmono.so、libunity.so
unity-classes.jar是unity的封裝好的一些類,如果有興趣的同學可以去反編譯看看。
libmain.so、libmono.so、libunity.so檔案是Unity寫的底層CPP,由於我們的重點不在這,就不展開講了。(這個超綱,我沒研究過~)
6、 Icon
在Unity的Player Settings是中,我們可以添加相應的Icon
這些Icon圖片將被重新壓縮、命名最後放入中的位置。
關於在哪邊設定icon的問題,看項目需要吧,如果覺得解析度不夠可以到匯出工程這邊添加修改~
比如:多渠道打包時,可能要多次替換Icon,寫指令碼在Android工程中自動化替換打包是一種不錯的選擇~
7、閃屏
Unity在Android是可以設定單圖片閃屏的,如。
不過Android天生是不帶閃屏這種東西的,所以APP會在第一個Activity中先顯示預先設定的圖片。想深入瞭解可以看一看這篇文章:Android進階篇之引導頁系列之Splash閃屏Logo
Unity的在Android的閃屏實現應該也是這樣處理的,注意注意!!這個思路很重要,以後我們Unity的閃屏也是這個思路做的。
8、Player Settings -> 設定
在Unity的Player Settings中存在著大量的配置,這些配置將反應到Android工程中,在中圈出了部分,這些東西並不複雜,我也就不贅述了。
「Unity」與iOS、Android平台的整合:2、匯出的Android-Eclipse工程