本文屬于「Unity與iOS余舶、Android平臺的整合」系列文章之一啊鸭,轉(zhuǎn)載請注明出處。
Unity默認導(dǎo)出的是Android-Eclipse工程匿值,畢竟Eclipse for Android開發(fā)在近一兩年才開始沒落赠制,用戶量還是非常巨大的。
個人認為AndroidStudio非常好用挟憔,能輕易解決很多Eclipse解決不了或者很難解決的問題钟些。
所以我將Unity導(dǎo)出的Andoid工程分為Eclipse和AndroidStudio兩部分烟号。
不過我之后的相關(guān)內(nèi)容都會使用AndroidStudio,希望依然使用Eclipse的同學(xué)盡快跟上~
本文主要講解Unity導(dǎo)出的Android-Eclipse工程的目錄結(jié)構(gòu)政恍。
話先說在前面汪拥,這篇文章和1、導(dǎo)出的Xcode工程 非常相似抚垃,我建議手游開發(fā)者將兩篇結(jié)合起來看~
我所用軟件的版本:
Unity 5.3.5f1
Eclipse 抱歉喷楣。。我現(xiàn)在只用AndroidStudio
前導(dǎo)步驟
第一步鹤树,創(chuàng)建一個新的工程 Unity_Build_to_Android
第二步铣焊,創(chuàng)建以下文件
//為了演示原生Android的jar包
Plugins/Android/libs/Jar.jar
//為了演示原生Android調(diào)用jni所需要的.so文件
Plugins/Android/libs/x86/libnative.so
//為了演示原生Android調(diào)用jni所需要.so文件
Plugins/Android/libs/armeabi-v7a/libnative.so
//為了演示Unity中隨包只讀文件的去向
StreamingAssets/ALL_EmptyTxt.txt
第三步,保存一下場景罕伯,如下圖
第四步曲伊,打開PlayerSettings,修改Bundle Identifier(包名)追他,Unity里面不修改不讓導(dǎo)出Android的~
第五步坟募,選擇Android平臺,Export導(dǎo)出Android工程
第六步邑狸,打開所導(dǎo)出Android工程的文件夾
進入正題
1懈糯、程序入口
任何程序都有一個入口,Unity導(dǎo)出的Android工程中也不例外单雾,通過下圖我們可以看到赚哗,在AndroidManifest.xml文件中,將UnityPlayerActivity設(shè)置為應(yīng)用的入口硅堆。(AndroidManifest.xml是Android的配置文件之一屿储,具體請自行搜索~)
通過下圖我們可以看到,UnityPlayerActivity是繼承了Activity渐逃,至于它是什么我就不贅述了够掠,大家可以看一下這一篇文章:Activity詳解(生命周期、以各種方式啟動Activity茄菊、狀態(tài)保存疯潭,完全退出等)
下圖為一個Activity的生命周期,我們可以看到系統(tǒng)事件存在著非常有用的監(jiān)聽面殖,在UnityPlayerActivity.java里面我們也可以看到對應(yīng)的函數(shù)袁勺,這意味著在Unity中一樣可以收到這些事件,以后我們將繼承UnityPlayerActivity畜普,并重寫這些監(jiān)聽期丰。
2、C# -> C++
這就是個很尷尬的問題了,現(xiàn)在5.3.5的版本還不支持在Android平臺下使用IL2CPP的模式钝荡,但是5.4的版本已經(jīng)可以支持了街立,這一點我打算等5.4的版本出了再補上~
3、資源 StreamingAssets -> assets
Unity導(dǎo)出Android工程后埠通,原工程中的各種資源都被壓縮赎离、打包、加密后存放在assets/bin/Data文件夾中端辱,見下圖梁剔,這一點和iOS是一致的,網(wǎng)上也有很多資源解密的方法舞蔽,大家有需要可以自行搜索荣病。
我們重點說一下Unity中的StreamingAssets文件夾,關(guān)于這個文件的作用渗柿,大家可以看一下這篇文章:Unity3D研究院之手游開發(fā)中所有特殊的文件夾
通過下圖我們可以看到个盆,StreamingAssets文件夾中的ALL_EmptyTxt.txt文件被完整地拷貝到assets文件夾中,實際上不光是文件朵栖,文件夾也會原封不動地拷入該文件夾颊亮。
至于這有什么用,比如說陨溅,配置文件放在這里终惑,上手機調(diào)試的話可以在Android工程中直接修改配置,而不需要到Unity里重新導(dǎo)出Android工程门扇。
4狠鸳、 Plugins/Android/libs -> 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的封裝好的一些Java類稼跳,用于在Android原生環(huán)境下處理相關(guān)業(yè)務(wù),如果有興趣的同學(xué)可以去反編譯看看吃沪。
libmain.so汤善、libmono.so、libunity.so文件是Unity寫的底層CPP,當然其中也包含我們的C#邏輯红淡,由于我們的重點不在這不狮,就不展開講了。(這個超綱在旱,我沒研究過~)
6摇零、 Icon
在Unity的Player Settings是中,我們可以添加相應(yīng)的Icon
這些Icon圖片將被重新壓縮桶蝎、命名最后放入下圖中的位置驻仅。
關(guān)于在哪邊設(shè)置icon的問題,看項目需要吧登渣,如果覺得分辨率不夠可以到導(dǎo)出工程這邊添加修改~
比如:多渠道打包時噪服,可能要多次替換Icon,寫腳本在Android工程中自動化替換打包是一種不錯的選擇~
7绍豁、閃屏
Unity在Android是可以設(shè)置單圖片閃屏的芯咧,如下圖。
不過Android天生是不帶閃屏這種東西的竹揍,所以APP會在第一個Activity中先顯示預(yù)先設(shè)定的圖片敬飒。想深入了解可以看一看這篇文章:Android進階篇之引導(dǎo)頁系列之Splash閃屏Logo
Unity的在Android的閃屏實現(xiàn)應(yīng)該也是這樣處理的,注意注意7椅弧无拗!這個思路很重要,以后我們Unity的閃屏也是這個思路做的昧碉。
8英染、Player Settings -> 設(shè)置
在Unity的Player Settings中存在著大量的配置,這些配置將反應(yīng)到Android工程中被饿,在下圖中圈出了部分四康,這些東西并不復(fù)雜,我也就不贅述了狭握。