Unity - Package - Web Stripping Tool

Quick Chat

透過移除未使用的 子模組(Submodules),你可以在不刪除整個功能套件的情況下,有效縮減遊戲的最終建置大小。

這款套件可說是 Unity 6 推出至今,我個人認為最有價值的工具之一。然而,它卻只在 Unity Korea 的 YouTube 頻道上發布介紹,而且幾乎沒有任何宣傳,這點實在令人費解 😂。

⚠️ 詳細的具體操作步驟,請務必參考官方文件與影片說明。此處僅列出幾個關鍵要點。

Guide

Notice

  1. 適用於 Unity 6.1 及以上版本。
  2. 用於移除 Submodules 而不是整個 Modules。 若使用 2D Rendering 但未使用到 2D Rendering Sorting,則可以僅刪除指定子模組。
  3. 剝離過程是在遊戲完成初步建構後進行的,屬於建構管線的 後處理 步驟。
  4. 建議將設置文件納入版本控制。
  5. 該工具將持續改進,並計劃支持更多子模組。
  6. Question about Original wasm size behavior with Strip Automatically After Build - Unity Engine - Unity Discussions

Workflow

  1. 安裝與設置

    • 在 Unity 的 Package Manager 中安裝該工具。
    • 啟用「子模組剝離相容性」選項,並設置調試符號為外部。
  2. 剖析(Profiling)

    • 進行初次建構並運行遊戲,完整測試遊戲的所有功能。
    • 生成 JSON 格式的剖析報告,列出未使用的子模組。
  3. 子模組剝離

    • 將剖析數據導入工具,選擇需要剝離的子模組。
    • 執行剝離後,生成完整的報告,包括文件變更對比和剝離的子模組清單。
  4. 驗證與調整

    • 測試遊戲是否正常運行,若發現錯誤,調整剝離清單。
  5. 整合到建構流程

    • 可啟用「建構後自動剝離」選項,或使用剝離 API 進一步整合至自定義建構流程。

Workflow(Practice)

  1. 先 Build 一個 Dev 環境的版本

    • 不必做最佳化輸出,以快速輸出為目標。
    • 這個版本指示是為了用來測試有什麼 子模組 可以被剝離。
    • 使用這個版本導出可剝離的子模組清單。
  2. 我會將壓縮算法的子模組重新納入

    • 約 0.1 MB 還可以接受。
    • 壓縮算法到導出的階段都可能在調整。
    • 如果真的要保持極限乾淨的包體,之後應該會寫 BuildPipeline。

    Exempted Compression Algorithm

  3. 輸出 Release 版本

    • 於 Submodules Stripping 面板勾選 Strip Automatically After Build