跳至主要内容
版本:v3

BundleConfig

重要 注意 提醒

Coding Style wiki​


BundleConfig 是 AssetLoader 模組的執行期核心設定與工具類,集中管理資源運行模式(PlayMode)、下載與載入參數等靜態設定,並提供佈署配置檔(CdnConfig)解析、CDN 端點路徑組合與本地/內建路徑定位等工具方法。

命名空間OxGFrame.AssetLoader.Bundle
類型public static class
原始碼BundleConfig.cs
using OxGFrame.AssetLoader.Bundle;

提醒 一般情況下,運行模式與 Preset Packages 由場景中 PatchLauncher 元件的 Inspector 設定配置,並於啟動時自動寫入 BundleConfig 的對應欄位,無需手動指派。

列舉​

PlayMode​

public enum PlayMode
{
EditorSimulateMode,
OfflineMode,
HostMode,
WeakHostMode,
WebGLMode,
WebGLRemoteMode,
CustomMode
}

資源運行模式。

名稱值說明
EditorSimulateMode0編輯器模擬模式。無需實際建置 Bundles,於編輯器中直接模擬資源運行(僅供開發階段使用)。
OfflineMode1離線模式。僅使用隨包內建資源運行,不進行遠端更新。
HostMode2聯機模式。自 Host Server(CDN)檢查版本並下載更新資源。
WeakHostMode3弱聯網模式。基於聯機模式,支援斷網時退回本地最後記錄的版本繼續運行(搭配 enableLastLocalVersionsCheckInWeakNetwork 參數)。
WebGLMode4WebGL 模式。僅使用 Web 伺服器上的內建資源運行。
WebGLRemoteMode5WebGL 遠端模式。支援自遠端伺服器(CDN)下載更新資源。
CustomMode6自定義模式。由開發者透過 YooAsset 初始化參數自行配置運行方式(不支援 Preset Packages 的自動初始化)。

BuildMode​

public enum BuildMode
{
BuiltinBuildPipeline = 1,
ScriptableBuildPipeline = 0,
RawFileBuildPipeline = 2,
#if YOOASSET_3
ArchiveFileBuildPipeline = 3
#endif
}

資源建置管線模式。

名稱值說明
ScriptableBuildPipeline0可程式化建置管線(SBP, Scriptable Build Pipeline)。
BuiltinBuildPipeline1內建建置管線(Built-in Build Pipeline)。
RawFileBuildPipeline2原生檔案建置管線(Raw File Build Pipeline)。
ArchiveFileBuildPipeline3歸檔檔案建置管線(Archive File Build Pipeline)。限 YooAsset v3(YOOASSET_3)。

提醒 YOOASSET_2 / YOOASSET_3 由框架依安裝的 YooAsset 版本自動定義(無需手動設定),完整差異對照參考 YooAsset 版本相容性。

提醒 Preset Package 上的 buildMode 設定僅在 EditorSimulateMode 下生效。

CryptogramType 常數​

public class CryptogramType
{
public const string NONE = "NONE";
public const string OFFSET = "OFFSET";
public const string XOR = "XOR";
public const string HT2XOR = "HT2XOR";
public const string HT2XORPLUS = "HT2XORPLUS";
public const string AES = "AES";
public const string CHACHA20 = "CHACHA20";
public const string XXTEA = "XXTEA";
public const string OFFSETXOR = "OFFSETXOR";
}

加解密類型識別字,用於組合解密參數字串(如 PatchLauncher 的 Decrypt Info 設定,識別字大小寫不敏感):

常數值解密參數格式
NONE"NONE"NONE(無加密)
OFFSET"OFFSET"OFFSET, dummySize
XOR"XOR"XOR, key
HT2XOR"HT2XOR"HT2XOR, hKey, tKey, jKey
HT2XORPLUS"HT2XORPLUS"HT2XORPLUS, hKey, tKey, j1Key, j2Key
AES"AES"AES, key, iv
CHACHA20"CHACHA20"CHACHA20, key, nonce, counter
XXTEA"XXTEA"XXTEA, key
OFFSETXOR"OFFSETXOR"OFFSETXOR, key, dummySize

靜態欄位​

運行模式與 Preset Packages​

名稱型別預設值說明
playModePlayModePlayMode.EditorSimulateMode當前資源運行模式。由 PatchLauncher 於啟動時依 Inspector 設定寫入。
playModeParametersPlayModeParametersnull當前運行模式的參數配置。由 PatchLauncher 依運行模式指派對應的參數物件。
listAppPackagesList<AppPackageInfoWithBuild>nullApp Preset Package 清單(預設包裹)。由 PatchLauncher 寫入。
listDlcPackagesList<DlcPackageInfoWithBuild>nullDLC Preset Package 清單(預設包裹)。由 PatchLauncher 寫入。

下載選項 (Download Options)​

名稱型別預設值說明
maxConcurrencyDownloadCountint10同時併發下載數量。於建立下載器時作為預設併發數。
failedRetryCountint3下載失敗重新嘗試次數。於建立下載器時作為預設重試數。
breakpointFileSizeThresholduint20971520
(20 MB)
斷點續傳門檻(bytes)。檔案大小達門檻時啟用斷點續傳(對應 YooAsset 檔案系統參數 RESUME_DOWNLOAD_MINMUM_SIZE)。
DEFAULT_DOWNLOAD_WATCHDOG_TIMEOUTint30downloadWatchdogTimeout 的預設值。
downloadWatchdogTimeoutint30下載器看門狗監控逾時時間。監控時間範圍內未接收到任何下載數據時,直接終止該下載任務(對應 YooAsset 檔案系統參數 DOWNLOAD_WATCH_DOG_TIME)。

載入選項 (Load Options)​

名稱型別預設值說明
bundleLoadReadBufferSizeuint32768
(32 KB)
資源讀取緩衝大小(AssetBundle.LoadFromStream)。
bundleDecryptReadBufferSizeuint32768
(32 KB)
資源解密讀取緩衝大小。
autoUnloadBundleWhenUnusedboolfalse資源引用計數歸零時,自動釋放資源包(對應 YooAsset AutoUnloadBundleWhenUnused)。

處理選項 (Process Options)​

名稱型別預設值說明
operationSystemMaxTimeSlicelong30非同步作業系統每幀執行消耗的最大時間切片(毫秒,透過 YooAssets.SetOperationSystemMaxTimeSlice 套用)。
注意
  • autoUnloadBundleWhenUnused、breakpointFileSizeThreshold、downloadWatchdogTimeout 與 operationSystemMaxTimeSlice 於 Package 初始化階段套用至 YooAsset,如需調整請於初始化流程前設定。
  • maxConcurrencyDownloadCount 與 failedRetryCount 於每次建立下載器時讀取。

方法總覽​

佈署配置檔 (Bundle URL Config)​

方法說明
GetValueFromUrlCfg自佈署配置檔(CdnConfig)取得指定鍵的值(自動偵測加密並解密)。
GetAppStoreLink取得主程式商店連結(store_link)。
GoToAppStore以系統瀏覽器開啟主程式商店頁面。

AppConfig 取得​

方法說明
GetAppConfigFromStreamingAssets自內建 StreamingAssets 讀取 AppConfig。
GetAppConfigFromHostServer自 Host Server 下載 AppConfig(支援弱聯網回退)。

Host Server 端點​

方法說明
GetHostServerUrl組合 App Package 的遠端下載端點 URL。
GetFallbackHostServerUrl組合 App Package 的備援下載端點 URL。
GetDlcHostServerUrl組合 DLC Package 的遠端下載端點 URL。
GetDlcFallbackHostServerUrl組合 DLC Package 的備援下載端點 URL。
GetHostServerAppConfigPath取得遠端伺服器上 AppConfig 的完整 URL。
GetHostServerPatchConfigPath取得遠端伺服器上 PatchConfig 的完整 URL。

本地與內建路徑​

方法說明
GetLocalSandboxRootPath取得本地持久化資源(Sandbox)根目錄路徑。
GetLocalSandboxPackagePath取得指定 Package 的本地持久化路徑。
GetBuiltinRootPath取得內建資源(Built-in)根目錄路徑。
GetBuiltinPackagePath取得指定 Package 的內建路徑。
GetLocalSandboxAppConfigPath取得本地持久化路徑中的 AppConfig 完整路徑。
GetStreamingAssetsAppConfigPath取得 StreamingAssets 中的 AppConfig 完整路徑。
GetRequestStreamingAssetsPath取得適用於 UnityWebRequest 的 StreamingAssets 路徑。

位元組讀寫工具 (Header Helper)​

方法說明
WriteInt16將 16 位元整數寫入緩衝區(little-endian)。
ReadInt16自緩衝區讀取 16 位元整數。

GetValueFromUrlCfg​

public static async UniTask<string> GetValueFromUrlCfg(string key)

參數

參數型別說明
keystring佈署配置檔中的鍵名。可使用 PatchSettings.BUNDLE_IP、PatchSettings.BUNDLE_FALLBACK_IP、PatchSettings.STORE_LINK 常數。

回傳值

UniTask<string> — 鍵對應的值;配置檔內容為空時回傳 string.Empty;查無鍵值時回傳 null。

說明

自內建 StreamingAssets 讀取佈署配置檔(檔名由 PatchSettings 設定決定,預設 CdnConfig.dat)並解析鍵值資料,首次讀取後會快取解析結果。

注意 讀取時自動偵測檔頭:若前 2 位元組符合加密標記 PatchSettings.CIPHER_HEADER,將使用 PatchSettings.settings.bundleUrlCfgCipher 金鑰自動解密後再解析。

範例

// 取得主要 CDN 位址(bundle_ip)
string host = await BundleConfig.GetValueFromUrlCfg(PatchSettings.BUNDLE_IP);

public static async UniTask<string> GetAppStoreLink()

回傳值

UniTask<string> — 主程式商店連結(佈署配置檔中 store_link 鍵的值);查無時回傳 null。

說明

自佈署配置檔取得主程式商店連結(PatchSettings.STORE_LINK)。


GoToAppStore​

public static async UniTaskVoid GoToAppStore()

說明

取得商店連結(GetAppStoreLink)後,直接呼叫 Application.OpenURL 以系統瀏覽器開啟主程式商店頁面(Google Play / App Store),常用於強制更新流程。回傳 UniTaskVoid(射後不理,無需等待)。

範例

// 檢測到主程式版本過舊,引導玩家前往商店更新
BundleConfig.GoToAppStore().Forget();

GetAppConfigFromStreamingAssets​

public static async UniTask<AppConfig> GetAppConfigFromStreamingAssets()

回傳值

UniTask<AppConfig> — 內建的 AppConfig;讀取失敗時回傳 null。

說明

自內建 StreamingAssets 讀取 AppConfig(預設 AppInfo.json),內容包含 PLATFORM(平台)、PRODUCT_NAME(產品名稱)、APP_VERSION(主程式版本)與 SEMANTIC_RULE(版號規則)。首次讀取後會快取。


GetAppConfigFromHostServer​

public static async UniTask<AppConfig> GetAppConfigFromHostServer()

回傳值

UniTask<AppConfig> — Host Server 上的 AppConfig;無法取得時回傳 null。

說明

自 Host Server 下載最新的 AppConfig(用於版本比對與組合最新版本路徑)。首次讀取後會快取。

注意 下載失敗時,若啟用弱聯網處理(playModeParameters.enableLastLocalVersionsCheckInWeakNetwork,僅弱聯網模式適用),將退回使用本地儲存的上次成功版本資料。


GetHostServerUrl​

public static async UniTask<string> GetHostServerUrl(string packageName)

參數

參數型別說明
packageNamestring資源包(Package)名稱。

回傳值

UniTask<string> — App Package 的遠端下載端點 URL。

說明

依 Host Server 的最新 AppConfig 組合 App Package 的下載端點,格式如下:

<bundle_ip>/<rootFolderName>/<PRODUCT_NAME>/<PLATFORM>/<vX.Y[.Z]>/<packageName>

提醒 版本資料夾格式由 AppConfig 的 SEMANTIC_RULE 決定:PATCH 啟用時為 v<Major>.<Minor>.<Patch>(如 v1.0.0),否則為 v<Major>.<Minor>(如 v1.0)。

範例

string url = await BundleConfig.GetHostServerUrl("DefaultPackage");
// 例:http://127.0.0.1/CDN/MyProduct/StandaloneWindows64/v1.0/DefaultPackage

GetFallbackHostServerUrl​

public static async UniTask<string> GetFallbackHostServerUrl(string packageName)

參數

參數型別說明
packageNamestring資源包(Package)名稱。

回傳值

UniTask<string> — App Package 的備援下載端點 URL。

說明

行為同 GetHostServerUrl,改以備援位址(bundle_fallback_ip)組合路徑。


GetDlcHostServerUrl​

public static async UniTask<string> GetDlcHostServerUrl(string packageName, string dlcVersion, bool withoutPlatform = false)

參數

參數型別說明
packageNamestringDLC 資源包名稱。
dlcVersionstringDLC 版本號(DLC 具有獨立版本,不隨主程式版本路徑)。
withoutPlatformbool是否省略平台層級路徑。
預設值:false

回傳值

UniTask<string> — DLC Package 的遠端下載端點 URL。

說明

組合 DLC Package 的下載端點,格式如下:

<bundle_ip>/<rootFolderName>/<PRODUCT_NAME>/<PLATFORM>/<dlcFolderName>/<packageName>/<dlcVersion>

withoutPlatform 為 true 時省略 <PLATFORM> 層級。

範例

string url = await BundleConfig.GetDlcHostServerUrl("Dlc01Package", "1.0.0");
// 例:http://127.0.0.1/CDN/MyProduct/StandaloneWindows64/DLC/Dlc01Package/1.0.0

GetDlcFallbackHostServerUrl​

public static async UniTask<string> GetDlcFallbackHostServerUrl(string packageName, string dlcVersion, bool withoutPlatform = false)

參數

參數型別說明
packageNamestringDLC 資源包名稱。
dlcVersionstringDLC 版本號。
withoutPlatformbool是否省略平台層級路徑。
預設值:false

回傳值

UniTask<string> — DLC Package 的備援下載端點 URL。

說明

行為同 GetDlcHostServerUrl,改以備援位址(bundle_fallback_ip)組合路徑。


GetHostServerAppConfigPath​

public static async UniTask<string> GetHostServerAppConfigPath()

回傳值

UniTask<string> — 遠端伺服器上 AppConfig 的完整 URL。

說明

組合資源伺服器上 AppConfig 配置檔的 URL(<bundle_ip>/<rootFolderName>/<PRODUCT_NAME>/<PLATFORM>/ 加上 AppConfig 檔名,預設 AppInfo.json)。

重要 會先讀取內建(StreamingAssets)的 AppConfig 以確定當前產品名稱與平台,再組合遠端請求路徑。


GetHostServerPatchConfigPath​

public static async UniTask<string> GetHostServerPatchConfigPath()

回傳值

UniTask<string> — 遠端伺服器上 PatchConfig 的完整 URL。

說明

組合資源伺服器上 PatchConfig 配置檔的 URL(<bundle_ip>/<rootFolderName>/<PRODUCT_NAME>/<PLATFORM>/ 加上 PatchConfig 檔名,預設 PatchInfo.json)。

重要 會先讀取內建(StreamingAssets)的 AppConfig 以確定當前產品名稱與平台,再組合遠端請求路徑。


GetLocalSandboxRootPath​

public static string GetLocalSandboxRootPath()

回傳值

string — 本地持久化資源(Sandbox)的根目錄路徑。

說明

取得本地持久化(下載儲存)的根目錄,即 YooAsset 預設的快取檔案根目錄(透過 YooAssetBridge 反射取得)。


GetLocalSandboxPackagePath​

public static string GetLocalSandboxPackagePath(string packageName)

參數

參數型別說明
packageNamestring資源包(Package)名稱。

回傳值

string — 指定 Package 的本地持久化路徑(下載內容的儲存位置)。

說明

以 GetLocalSandboxRootPath 為根目錄,組合指定 Package 的本地儲存路徑。


GetBuiltinRootPath​

public static string GetBuiltinRootPath()

回傳值

string — 內建資源(Built-in)的根目錄路徑。

說明

取得 YooAsset 預設的內建檔案根目錄(位於 StreamingAssets 下,透過 YooAssetBridge 反射取得)。


GetBuiltinPackagePath​

public static string GetBuiltinPackagePath(string packageName)

參數

參數型別說明
packageNamestring資源包(Package)名稱。

回傳值

string — 指定 Package 的內建路徑。

說明

以 GetBuiltinRootPath 為根目錄,組合指定 Package 的內建資源路徑。


GetLocalSandboxAppConfigPath​

public static string GetLocalSandboxAppConfigPath()

回傳值

string — 本地持久化路徑中的 AppConfig 完整路徑。

說明

取得本地持久化(Sandbox)路徑中 AppConfig 配置檔的完整路徑(下載的儲存路徑,檔名預設 AppInfo.json)。


GetStreamingAssetsAppConfigPath​

public static string GetStreamingAssetsAppConfigPath()

回傳值

string — StreamingAssets 中的 AppConfig 完整路徑。

說明

取得內建 StreamingAssets 中 AppConfig 配置檔的完整路徑(基於 GetRequestStreamingAssetsPath 組合,適用於 UnityWebRequest 讀取)。


GetRequestStreamingAssetsPath​

public static string GetRequestStreamingAssetsPath()

回傳值

string — 適用於 UnityWebRequest 的 StreamingAssets 路徑。

說明

取得適用於 UnityWebRequest 請求的 StreamingAssets 路徑。

注意 OSX(Standalone)與 iOS 平台會自動附加 file:// 協定前綴。


WriteInt16​

public static void WriteInt16(short value, byte[] buffer, ref int pos)

參數

參數型別說明
valueshort要寫入的 16 位元整數。
bufferbyte[]目標緩衝區。
posref int寫入位置(寫入後自動前移 2)。

說明

以 little-endian 位元組序將 16 位元整數寫入緩衝區。主要用於佈署配置檔加密檔頭(PatchSettings.CIPHER_HEADER)的寫入。


ReadInt16​

public static short ReadInt16(byte[] buffer, ref int pos)

參數

參數型別說明
bufferbyte[]來源緩衝區。
posref int讀取位置(讀取後自動前移 2)。

回傳值

short — 讀取的 16 位元整數。

說明

自緩衝區目前位置讀取 16 位元整數(位元組序依 BitConverter.IsLittleEndian 判斷)。主要用於佈署配置檔加密檔頭的偵測。