Skip to content

yttsai1511/unity-bundle-builder-library

Repository files navigation

Unity Bundle Builder

一個輕量且高效的 Unity AssetBundle 建置工具,提供自動化標記、依賴處理、配置管理等功能,簡化 AssetBundle 的建置流程,適合各種規模的 Unity 專案快速整合使用。

功能特色

此工具包含完整的 AssetBundle 建置流程管理,分為以下核心功能:

1. 自動化建置流程

  • 自動掃描指定目錄下的所有資源
  • 智能處理資源依賴關係,避免重複打包
  • 支援自訂排除目錄與檔案類型
  • 一鍵完成標記與建置流程

2. 靈活的配置系統

  • 支援配置檔案儲存與載入(JSON 格式)
  • 團隊協作友好,配置可納入版本控制
  • 自動載入預設配置,開箱即用
  • 支援多種輸出路徑模式(相對路徑/絕對路徑)

3. 完整的編輯器整合

  • 提供圖形化操作視窗(EditorWindow)
  • 資料夾選擇器,避免手動輸入路徑錯誤
  • 即時路徑預覽與隱私保護
  • 清晰的操作反饋與錯誤提示

4. 核心 API

提供完整的程式化 API,支援 CI/CD 整合:

  • 移除 Bundle 名稱:RemoveBundleNames
  • 清除資源標籤:ClearAssetLabels
  • 設定資源標籤:SetAssetLabels
  • 建置 AssetBundles:BuildBundles
  • 一鍵建置流程:StartBuildPipeline

使用範例

方式 1:使用 EditorWindow

  1. 開啟建置視窗

    • Unity 選單:Tools → AssetBundle → Open Builder Window
  2. 配置設定

    • Asset Directory:選擇要打包的資源目錄
    • Output Directory:選擇輸出目錄
    • Build Options:選擇建置選項
  3. 執行建置

    • 點擊 "Start Build Pipeline" 一鍵完成
    • 或分步驟執行:Remove Bundle Names → Set Asset Labels → Build Bundles
  4. 儲存配置

    • 點擊 "Save Config" 儲存當前配置
    • 配置檔案位於:Assets/BundleBuilderSettings.json
    • 下次開啟視窗時自動載入

方式 2:使用 API

using UnityEditor;

public class CustomBuildScript
{
    [MenuItem("Build/Custom AssetBundle Build")]
    public static void CustomBuild()
    {
        var builder = new BundleBuilder();

        // 自訂配置
        builder.Settings.AssetDirectory = "Assets/GameAssets";
        builder.Settings.OutputDirectory = "ServerBundles";
        builder.Settings.UseStreamingAssets = false;
        builder.Settings.BuildOptions = BuildAssetBundleOptions.ChunkBasedCompression;

        // 執行建置
        builder.StartBuildPipeline();
    }
}

配置說明

BuilderSettings 參數

參數名稱 類型 預設值 說明
AssetDirectory string "Assets/AssetBundles" 要打包的資源目錄(必須在 Assets 內)
UseStreamingAssets bool true 是否輸出到 StreamingAssets 資料夾
OutputDirectory string "AssetBundles" 輸出目錄名稱或絕對路徑
ExcludeDirectories string[] ["Packages"] 排除的目錄
ExcludeExtensions string[] [".cs"] 排除的副檔名
PathSeparator string "$" 路徑分隔符號替換字元
VariantName string "bundle" AssetBundle 的 Variant 名稱
CatalogFileName string "catalog.txt" 資源清單檔案名稱
BuildOptions BuildAssetBundleOptions None AssetBundle 建置選項

API 文件

核心方法

方法名稱 功能描述
RemoveBundleNames() 移除所有已註冊的 AssetBundle 名稱(快速操作)
ClearAssetLabels() 清除所有資源的 AssetBundle 標籤(完整清理)
SetAssetLabels() 自動掃描並設定資源的 AssetBundle 標籤
BuildBundles(catalog) 建置 AssetBundles 到指定輸出目錄
StartBuildPipeline() 一鍵執行完整建置流程

配置方法

方法名稱 功能描述
SaveToFile(path) 儲存配置到 JSON 檔案
LoadFromFile(path) 從 JSON 檔案載入配置
GetDefaultConfigPath() 取得預設配置檔案路徑
GetOutputPath() 取得完整的輸出路徑

建置流程說明

Start Build Pipeline 執行順序:

  1. Remove Bundle Names 移除所有已註冊的 AssetBundle 名稱,準備重新標記

  2. Set Asset Labels 掃描 Asset Directory 下的所有資源,自動設定標籤並處理依賴關係

  3. Build Bundles 使用 Unity BuildPipeline 建置 AssetBundles 到指定輸出目錄

輸出內容:

  • AssetBundle 檔案(每個資源獨立打包)
  • Manifest 檔案(Unity 自動生成)
  • catalog.txt(資源清單,包含所有打包的資源路徑)

注意事項

  1. Asset Directory 限制 必須選擇 Assets 資料夾內的目錄,工具會自動驗證並轉換為相對路徑

  2. 依賴處理 工具會自動追蹤並打包所有依賴資源,確保 Bundle 的完整性

  3. 命名規則 資源的 Bundle 名稱由路徑生成(例如:Assets/AssetBundles/Prefabs/Player.prefabAssets$AssetBundles$Prefabs$Player.prefab.bundle


授權

此專案基於 GPLv3 授權條款,詳情請參閱 LICENSE 文件。

About

A lightweight AssetBundle build tool for Unity with automated dependency handling and configuration management.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages