1. 程式人生 > >Unity 優化翻譯官方文件(一) ------ 減少打包安裝包的大小

Unity 優化翻譯官方文件(一) ------ 減少打包安裝包的大小

將構建應用程式的檔案大小保持在最低限度是很重要的,特別是對於移動裝置或應用程式商店來說,它們的大小限制。縮小規模的第一步是確定哪些資產對它貢獻最大,因為這些資產最有可能是優化的候選物件。這些資訊在您完成構建之後在編輯器日誌中可用,切換到控制檯視窗(選單:視窗 -> 控制檯),單擊右上方的小下拉麵板,選擇Open Editor日誌。

或者尋找此路徑 : C:\Users\使用者名稱\AppData\Local\Unity\Editor

編輯日誌提供了按型別劃分的資產的彙總,然後根據大小貢獻列出所有的個人資產。通常,像紋理、聲音和動畫這樣的東西佔據了最多的儲存空間,而指令碼,水平和陰影通常會產生最小的影響。列表中提到的檔案頭不是資產——它們實際上是新增到“原始”資產檔案的額外資料,以儲存引用和設定。標題通常對資產大小的影響很小,但是如果在Resources資料夾中有大量的大型資產,那麼它的值可能很大。

編輯器日誌可以幫助您識別那些您可能想要刪除或優化的資產,但是在您開始之前,您應該考慮以下內容:

  • 統一將匯入的資產重新編碼到它自己的內部格式中,因此源資產型別的選擇是不相關的。例如,如果您在專案中有一個多層的Photoshop紋理,那麼在構建之前它就會被壓縮和壓縮。將紋理匯出為.png檔案對構建大小沒有任何影響,因此您應該堅持在開發過程中對您最方便的格式。
  • Unity在構建過程中去掉了大部分未使用的資產,因此您不會通過手動從專案中刪除資產來獲得任何東西。唯一沒有刪除的資產是指令碼(無論如何都是非常小的)和資原始檔夾中的資產(因為Unity無法確定哪些是需要的,哪些不是)。考慮到這一點,您應該確保資原始檔夾中的唯一資產是您需要的遊戲。您可以使用assetbundle來替換資原始檔夾中的資產——這意味著Unity可以動態地載入資產,從而減少玩家的大小。

優化建議:

1.Textures

 紋理通常佔據了構建的大部分空間。

  •   如果這不能減少檔案的大小,試著減少紋理影象的物理大小(以畫素為單位)。要在不修改實際源內容的情況下做到這一點,請在Project檢視中選擇紋理,在Inspector中視窗縮小Max Size。要想知道這在遊戲中的效果,放大一個GameObject,它使用紋理,然後調整最大尺寸直到它在場景檢視中變得更糟,改變最大紋理大小並不會影響你的紋理資產,只是它在遊戲中的解析度。

2.Meshes and Animations

你可以壓縮網格和匯入的動畫片段,這樣它們在你的遊戲檔案中佔用更少的空間。為了啟用網格壓縮,選擇網格,然後在Inspector視窗中設定網格壓縮到低、中或高。網格和動畫壓縮使用量子化,這意味著它佔用更少的空間,但是壓縮會帶來一些不準確的地方。試驗一下您的模型可以接受什麼樣的壓縮級別。

注意:網格壓縮只產生較小的資料檔案,並且在執行時使用更少的記憶體。

減少動畫關鍵幀生成更小的資料檔案,並在執行時使用更少的記憶體;一般來說,您應該總是啟用它。

3.DLLs

預設情況下,Unity只包含了內建播放器中的以下dll:

  • mscorlib.dll

  • Boo.Lang.dll

  • UnityScript.Lang.dll

  • UnityEngine.dll

當building a player,您應該避免對系統的任何依賴。dll或System.Xml.dll。Unity在預設情況下不包括這些內建播放器,但是如果你使用它們的類,它們就會被包括在內。這些dll為玩家的儲存容量增加了1兆位元組。如果您需要在遊戲中解析XML,您可以使用Mono.Xml這樣的庫。zip作為系統庫的一個較小的替代方案。雖然大多數通用容器都包含在mscorlib中,但是在系統中很少有其他的容器。如果可能的話,你應該避免這些。

4.減少mobile .NET library size

Unity為一些移動裝置提供了兩個。NET API相容級別:.NET 2.0和.NET 2.0的一個子集。在Player Settings中為你的構建選擇適當的級別。

.NET 2.0 API配置檔案類似於完整的。NET 2.0 API。大多數庫例程都是完全實現的,所以這個選項提供了與預先存在的。NET程式碼的最佳相容性。然而,對於許多遊戲來說,不需要完整的庫,多餘的程式碼佔用了寶貴的記憶體空間。

為了避免浪費記憶體,Unity還支援。NET 2.0子集API配置檔案。這與Mono“monotouch”配置檔案非常相似,因此“monotouch”配置檔案的許多限制也適用於Unity的。NET 2.0子集的概要檔案。有關更多資訊,請參閱 MonoTouch limitations的文件。許多在遊戲中不需要的庫例程被排除在這個概要檔案之外,以節省記憶體。然而,這也意味著依賴於這些例程的程式碼不能正常工作。這個選項可以是一個有用的優化,但是您應該檢查現有的程式碼在應用之後仍然有效。

個人認為前兩項是非常有效的~