Unity3D腳本批量打包渠道包


最近在研究Unity3D腳本批量打包,比如在Android平台下各種不同分辨率和不同內存大小的機器,可能還有不同的渠道包,不同渠道可能用的SDK都不一樣,這一切的一切都表明你的代碼無法做到自適應的,除非批量打包提供各個平台的預定義標簽#define 。

Unity默認提供了一些預定義標簽如:

UNITY_EDITOR  : 編輯器模式下。

UNITY_STANDALONE:PC Mac Linux模型下。

UNITY_IPHONE:IOS模式下。

UNITY_ANDROID:ANDROID模式下。

還有很多預定義標簽、大家可以在這里看到:http://docs.unity3d.com/Documentation/Manual/PlatformDependentCompilation.html

 

         官方提供的標簽屬於比較大的范圍標簽,比如我希望在UNITY_ANDROID下面在寫一些自定義的標簽、類似 QQ UC CMCC這樣的渠道標簽該如何呢?如下圖所示,ProjectSetting打包界面每個平台都會有Scripting Define Symbols這個選項,可以在這里添加每個平台下對應的自定義標簽(多個標簽用“;”號隔開),這里我設置的是Android平台,如果IOS也需要打這樣的渠道標簽那么也要在IOS頁面Scripting Define Symbols選項處添加對應的標簽。

Unity3D研究院之腳本批量打包渠道包研究(六十四) - 雨松MOMO程序研究院 - 1

標簽做出來了就好辦了,然后在代碼中我們可以這樣來寫。如果在Scripting Define Symbols中沒有出現的標簽默認是不啟用的,就像 #define Test 一樣,會自動被注釋掉。

Unity3D研究院之腳本批量打包渠道包研究(六十四) - 雨松MOMO程序研究院 - 2

然后我們看看如何實現腳本批量打包。

 

 

這里面忘說了一點,如果我們希望在性能高的手機上用一套好的資源,在性能低的手機上用一套差一點的資源該怎么辦?那么首先我們先搞清楚Unity會把什么資源打包,什么資源不打包?

1.Resources文件夾 

Resources文件夾是一個只讀的文件夾,通過Resources.Load()來讀取對象。因為這個文件夾下的所有資源都可以運行時來加載,所以Resources文件夾下的所有東西都會被無條件的打到發布包中。建議這個文件夾下只放Prefab或者一些Object對象,因為Prefab會自動過濾掉對象上不需要的資源。舉個例子我把模型文件還有貼圖文件都放在了Resources文件夾下,但是我有兩張貼圖是沒有在模型上用的,那么此時這兩張沒用的貼圖也會被打包到發布包中。假如這里我用Prefab,那么Prefab會自動過濾到這兩張不被用的貼圖,這樣發布包就會小一些了。 

2.StreamingAssets

StreamingAssets文件夾也是一個只讀的文件夾,但是它和Resources有點區別,Resources文件夾下的資源會進行一次壓縮,而且也會加密,不使用點特殊辦法是拿不到原始資源的。但是StreamingAssets文件夾就不一樣了,它下面的所有資源不會被加密,然后是原封不動的打包到發布包中,這樣很容易就拿到里面的文件。所以StreamingAssets適合放一些二進制文件,而Resources更適合放一些GameObject和Object文件。StreamingAssets 只能用過www類來讀取!!

3. 最后凡是在Hierarchy視圖對象引用過的資源文件也會被無條件打包到發布包中。如果有一部分文件可能沒有在Resources文件夾下也沒有在StreamingAssets文件夾下,也沒有被Hierarchy視圖游戲對象引用,那么這類資源是不會被打包到發布包中的。

OK!搞清楚這一點就好辦了!在處理不同包對應不同資源包的時候,盡量讓可配置的資源放在Resources 或StreamingAssets文件夾下,運行的時候程序動態的來讀取它們,最后顯示在游戲中就可以了。在批量打包前,在Project視圖下創建不同包的資源文件夾, 然后腳本 AssetDatabase 動態的將資源拷貝至Resources或StreamingAssets 文件夾中,

http://docs.unity3d.com/Documentation/Manual/StreamingAssets.html

 

代碼中說到還有一個重要的東西就是PlayerSettings類。因為在Build的時候不同平台下可能會有一些PlatformSettings是不一樣的,所以需要在腳本里面動態的設置它,強大的參數列表在這里:http://docs.unity3d.com/Documentation/ScriptReference/PlayerSettings.html根據情況來批量構建自己的工程吧~

 

 

Unity3D研究院之腳本批量打包渠道包研究(六十四) - 雨松MOMO程序研究院 - 3

另外,由於IOS工程比較特殊,使用這樣的方法我們只能生成出來多個IOS的工程文件,但是這並不是最終發布的版本。如果想一鍵生成.ipa文件的話。

1.通過命令行來Build IOS  http://docs.unity3d.com/Documentation/Manual/CommandLineArguments.html

2.通過shell來自動打包 1生成的xcode工程,最終生成渠道包。

這兩種方法我已經在網上找到了答案,今天太晚了就不在研究了,下一篇的時候我在補上。 祝大家學習愉快!!不早了,晚安!歡迎大家一起來討論與學習,嘿嘿!!!

代碼下載地址:http://vdisk.weibo.com/s/HUf2W


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM