Releases: michael811125/OxGFrame
Release v3.5.1
[3.5.1] - 2025-10-02
English
- AssetLoader
-
Modified
- Modified the calculation and check logic for
AssetCache.RetryCounter.
- Modified the calculation and check logic for
-
Fixed
- Fixed a very rare same-frame reentrancy issue during
AssetCache(CacheBundle, CacheResources) loading that could lead to an incorrectRefCount.
- Fixed a very rare same-frame reentrancy issue during
-
中文
- AssetLoader
-
修改
- 修改 AssetCache.RetryCounter 計算與判斷方式。
-
修正
- 修正 AssetCache (CacheBundle, CacheResources) 加載時,極小機率出現同幀重入 (same-frame reentrancy) 問題,導致 RefCount 不正確。
-
Release v3.5.0
[3.5.0] - 2025-10-01
English
Please get help from ChatGPT or Google Translate.
中文
- AssetLoader
-
新增
- 新增 PatchLauncher 參數 DownloadWatchdogTimeout 設定。

- 新增 AssetPatcher.GetAllPackages() 方法。
- 新增 AssetPacher.SetPresetPackages(List appPackages, List dlcPackages) 方法。
- 用於設置預設 APP 跟 DLC 包裹 (便於 CustomMode)。
- 新增 AssetPacher.InitializePresetPackages() 方法。
- 用於手動初始預設 APP 跟 DLC 包裹 (便於 CustomMode)。
- 新增 AssetPatcher.GetBundleDecryptionServices() 方法。
- 獲取資源解密服務 (便於 CustomMode)。
- 新增 AssetPatcher.GetManifestDecryptionServices() 方法。
- 獲取資源清單解密服務 (便於 CustomMode)。
- 新增 OXGFRAME_CUSTOM_MODE 宏。
- 新增 CustomMode,支持自定義 YooAsset 包裹運行模式 (流程繁瑣,須注意初始步驟)。
- 用於:微信小遊戲、抖音小遊戲、支付寶小遊戲、TapTap 小遊戲、CustomPlayModeParameters (自定義運行模式)、等等...。
- 注意:當使用 CustomMode,所有 YooAsset 包裹初始皆需要自行實現。
- CustomMode 初始化流程概述:
- 是否有 Preset Packages 需求。
- 有的話,可自定義與設置 AssetPacher.SetPresetPackages(List appPackages, List dlcPackages)。
- 不管有沒有 Preset Packages 需求,都必須手動調用 async AssetPacher.InitializePresetPackages()。
- 輪詢 AssetPacher.isInitialized() 判斷標記是否返回 true。
- 新增 PlayModeParameters,提高配置擴展性。

參數說明:public static class PlayModeParametersDefine { /// <summary> /// [Boolean] 初始預設包裹 /// </summary> public const string INITIALIZE_PRESET_PACKAGES = "INITIALIZE_PRESET_PACKAGES"; /// <summary> /// [Boolean] 獲取遠端 App 版號文件 /// </summary> public const string FETCH_APP_CONFIG_FROM_SERVER = "FETCH_APP_CONFIG_FROM_SERVER"; /// <summary> /// [Boolean] 版號 PATCH 檢查規則 /// </summary> public const string SEMANTIC_RULE_PATCH = "SEMANTIC_RULE_PATCH"; /// <summary> /// [Boolean] 是否自動檢查與設置請求端點 (Host Server, Fallback Host Server) /// </summary> public const string AUTO_CONFIGURE_SERVER_ENDPOINTS = "AUTO_CONFIGURE_SERVER_ENDPOINTS"; /// <summary> /// [Boolean] 是否創建 PresetPackages 下載器 /// </summary> public const string CREATE_PRESET_PACKAGES_DOWNLOADER = "CREATE_PRESET_PACKAGES_DOWNLOADER"; /// <summary> /// [Boolean] 是否檢查硬盤空間 (當創建 PresetPackages 下載器時, 會進行檢查) /// </summary> public const string ENABLE_DISK_SPACE_CHECK_FOR_PRESET_PACKAGES_DOWNLOADER = "ENABLE_DISK_SPACE_CHECK_FOR_PRESET_PACKAGES_DOWNLOADER"; /// <summary> /// [Boolean] 是否檢查本地最後版本 (用於弱聯網環境) /// </summary> public const string ENABLE_LAST_LOCAL_VERSIONS_CHECK_IN_WEAK_NETWORK = "ENABLE_LAST_LOCAL_VERSIONS_CHECK_IN_WEAK_NETWORK"; }
- 新增 PatchLauncher 參數 DownloadWatchdogTimeout 設定。
-
修改
- 修改 AssetLoaders.Unload & Release 系列接口,移除異步改為同步。
-
修正
- 修正尚未配置 PatchLauncher 的 Preset Pacakges (空數組),當進行 AssetPacher.Check() 檢查時,無法正確處理 PatchFsmStates.VersionUpdate 跟 PatchFsmStates.ManifestUpdate 的流程。
-
移除
- 移除 AssetPatcher.GetPackageAssetInfosByTags 方法 (直接從 Package 獲取 AssetInfo 即可)。
- 移除 AssetPatcher.GetPackageAssetInfosByAssetNames 方法 (直接從 Package 獲取 AssetInfo 即可)。
-
優化
- 優化 AssetLoaders.Release 相關接口的釋放流程。
- 優化 AssetLoaders.Unload 相關接口為卸載指定資源,提高卸載效率。
- 優化 PatchFsmStates.FsmCreateDownloader 群包處理判斷流程。
- 優化 PlayMode 運行環境配置,使用 PlayModeParameters 取代,提高擴展性。
- 優化 PackageOperation 流程。
-
更新
- 更新 YooAsset v2.3.14 至 v2.3.16 (f3ebda0)。
- 重要:v2.3.15 以上升級了資源清單版本,不相容於舊版本,建議重新提審安裝包。
- 備註:資源相互依賴卸載問題,目前先暫時解決 YooAsset issue (#650),後續會再以 YooAsset 更新為主。
- 更新 YooAsset v2.3.14 至 v2.3.16 (f3ebda0)。
-
CustomMode - Hotfix 初始化流程
var hotfixPackageName = "HotfixPackage";
var hotfixPackage = new AppPackageInfoWithBuild();
hotfixPackage.buildMode = BundleConfig.BuildMode.ScriptableBuildPipeline;
hotfixPackage.packageName = hotfixPackageName;
hotfixPackage.hostServer = await BundleConfig.GetHostServerUrl(hotfixPackageName);
hotfixPackage.fallbackHostServer = await BundleConfig.GetFallbackHostServerUrl(hotfixPackageName);
var remoteServices = new HostServers(hotfixPackage.hostServer, hotfixPackage.fallbackHostServer);
var bundleDecryptionServices = AssetPatcher.GetBundleDecryptionServices();
var manifestDecryptionServices = AssetPatcher.GetManifestDecryptionServices();
hotfixPackage.initializeParameters = new WebPlayModeParameters();
var createParameters = hotfixPackage.initializeParameters as WebPlayModeParameters;
/**
* 省略...建議參考其他模式初始參數
*/
Hotfixers.CheckHotfix
(
// Download and load hotfix files from HotfixPackage
hotfixPackage,
// Metadata for AOT assemblies
new string[]
{
"mscorlib.dll"
},
// Hotfix assemblies
new string[]
{
"HotfixerDemo.Hotfix.Runtime.dll"
}
);CustomMode - Preset Packages 初始化流程
WebPlayModeParameters
var packageNameA = "MyCustomPackageA";
var packageA = new AppPackageInfoWithBuild();
packageA.buildMode = BundleConfig.BuildMode.ScriptableBuildPipeline;
packageA.packageName = packageNameA;
packageA.hostServer = await BundleConfig.GetHostServerUrl(packageNameA);
packageA.fallbackHostServer = await BundleConfig.GetFallbackHostServerUrl(packageNameA);
var remoteServicesA = new HostServers(packageA.hostServer, packageA.fallbackHostServer);
var bundleDecryptionServicesA = AssetPatcher.GetBundleDecryptionServices();
var manifestDecryptionServicesA = AssetPatcher.GetManifestDecryptionServices();
packageA.initializeParameters = new WebPlayModeParameters();
var createParametersA = packageA.initializeParameters as WebPlayModeParameters;
/**
* 省略...建議參考其他模式初始參數
*/
var packageNameB = "MyCustomPackageB";
var packageB = new AppPackageInfoWithBuild();
packageB.buildMode = BundleConfig.BuildMode.ScriptableBuildPipeline;
packageB.packageName = packageNameB;
packageB.hostServer = await BundleConfig.GetHostServerUrl(packageNameB);
packageB.fallbackHostServer = await BundleConfig.GetFallbackHostServerUrl(packageNameB);
var remoteServicesB = new HostServers(packageB.hostServer, packageB.fallbackHostServer);
var bundleDecryptionServicesB = AssetPatcher.GetBundleDecryptionServices();
var manifestDecryptionServicesB = AssetPatcher.GetManifestDecryptionServices();
packageB.initializeParameters = new WebPlayModeParameters();
var createParametersB = packageB.initializeParameters as WebPlayModeParameters;
/**
* 省略...建議參考其他模式初始參數
*/
var packageNameC = "MyCustomPackageC";
var packageC = new DlcPackageInfoWithBuild();
packageC.buildMode = BundleConfig.BuildMode.ScriptableBuildPipeline;
packageC.packageName = packageNameC;
packageC.withoutPlatform = false;
packageC.dlcVersion = "latest";
packageC.hostServer = await BundleConfig.GetDlcHostServerUrl(packageNameC, packageC.dlcVersion, packageC.withoutPlatform);
packageC.fallbackHostServer = await BundleConfig.GetDlcFallbackHostServerUrl(packageNameC, packageC.dlcVersion, packageC.withoutPlatform);
var remoteServicesC = new HostServers(packageC.hostServer, packageC.fallbackHostServer);
var bundleDecryptionServicesC = AssetPatcher.GetBundleDecryptionServices();
var manifestDecryptionServicesC = AssetPatcher.GetManifestDecryptionServices();
packageC.initializeParameters = new WebPlayModeParameters();
var createParametersC = packageC.initializeParameters as WebPlayModeParameters;
/**
* 省略...建議參考其他模式初始參數
*/
// 設置預設包裹
AssetPatcher.SetPresetPackages
(
new List<AppPackageInfoWithBuild>()
{
packageA,
packageB,
},
new List<DlcPackageInfoWithBuild>()
{
packageC
}
);
// 初始預設包裹
await AssetPatcher.InitializePresetPackages();CustomPlayModeParameters
var packageNameA = "MyCustomPackageA";
var packageA = new AppPackageInfoWithBuild();
packageA.buildMode = BundleConfig.BuildMode.ScriptableBuildPipeline;
packageA.packageName = packageNameA;
packageA.hostServer = await BundleConfig.GetHostServerUrl(packageNameA);
...Release v3.4.7
[3.4.7] - 2025-09-07
English
- Organized all code logging outputs to remove RichText colorization and handle coloring exclusively via the OxGKit.LoggingSystem logger.
- Must upgrade OxGKit.LoggingSystem to v1.3.1.
中文
- 整理所有代碼打印方式,移除 RichText 上色,統一由 OxGKit.LoggingSystem 日誌器實現上色。
- 必須升級 OxGKit.LoggingSystem 至 v1.3.1。
Release v3.4.6
[3.4.6] - 2025-08-18
English
- CoreFrame
- Added support for binding rules that allow multiple components.
- Example: _Node@MyObj*Txt*Img*BtnPlus → parsed into bindings: _myObjTxt, _myObjImg, _myObjBtnPlus.
- Added support for binding rules that allow multiple components.
中文
- CoreFrame
- 新增支持綁定規則允許多組件。
- 例如:_Node@MyObj*Txt*Img*BtnPlus -> 解析綁定為 _myObjTxt, _myObjImg, _myObjBtnPlus。
- 新增支持綁定規則允許多組件。
Release v3.4.5
[3.4.5] - 2025-08-07
English
- CoreFrame
- Added an
awaitingUIExtraDurationparameter to control the buffer time for the awaiting window.
- Added an
- MediaFrame
- Modified the preparation logic in
VideoBase. - Fixed an issue where
AudioBasedid not correctly execute its preparation process, which occasionally caused playback problems.
- Modified the preparation logic in
中文
- CoreFrame
- 新增 awaitingUIExtraDuration 參數,可以控制等待窗體的緩衝時間。
- MediaFrame
- 調整 VideoBase 執行準備邏輯。
- 修正 AudioBase 沒有正常執行準備流程,導致偶發出現播放問題。
Release v3.4.4
[3.4.4] - 2025-07-25
English
-
Adjusted the instantiation approach of the BuildTool's Manifest Encryption Services interface (No impact on usage). Existing imported samples need to be updated.
- Added the ClearBuildCacheFiles option.
- Added the UseAssetDependencyDB option.
-
AssetLoader
- Adjusted the implementation of the ManifestEncryptionServices interface to unify and consolidate its structure (No impact on usage).
中文
-
調整 BuildTool 的 Manifest Encryption Services 接口實例 (不影響使用),已經匯入的需要再次進行更新。
- 新增 ClearBuildCacheFiles 選項。
- 新增 UseAssetDependencyDB 選項。
-
AssetLoader
- 調整 ManifestEncryptionServices 接口進行統一整併實現 (不影響使用)。
Release v3.4.3
[3.4.3] - 2025-07-24
English
-
Added BuildTool Extension (importable via Package Manager Samples), enabling CLI-based construction of both main application and asset bundles (can be referenced or used directly).
- Also includes a
MenuItem→OxGFrame/Extensions/BuildTool/Build Bundles by Bundle Map JSONeditor tool for asset bundle building via the JSON map.
- Also includes a
-
AssetLoader
- Modified interfaces for Manifest Services (
IManifestProcessServices,IManifestRestoreServices).- Note: When building with YooAsset, the Manifest encryption/decryption Process and Restore options must be the same.
- Modified
PatchSetting.assetcreation logic to automatically generate aResourcesfolder for placement. - Upgraded YooAsset to v2.3.14
- Modified interfaces for Manifest Services (
中文
-
新增 BuildTool Extension (從 Package Manager 的 Samples 進行匯入),可以使用 CLI 構建主程序跟資源 (可以參考或直接使用)。
- 額外包含 MenuItem -> OxGFrame/Extensions/BuildTool/Build Bundles by Bundle Map JSON 編輯器可直接進行資源構建。
-
AssetLoader
- 修改 Manifest Services 接口 (IManifestProcessServices, IManifestRestoreServices)。
- 說明:如果使用 YooAsset 構建資源時,針對 Manifest 加解密選項的 Process 跟 Restore 必須選擇一樣。
- 修改建立 PatchSetting.asset 時,會自動創建 Resources 文件夾進行放置。
- 更新 YooAsset 至 v2.3.14。
- 修改 Manifest Services 接口 (IManifestProcessServices, IManifestRestoreServices)。
Build Bundles by Bundle Map JSON Editor

Release v3.4.2
[3.4.2] - 2025-07-22
English
- Hotfixer
- Fixed an issue where
packageNamewas not correctly set when initializing the Hotfix Package usingpackageInfoWithBuild.
- Fixed an issue where
中文
- Hotfixer
- 修正使用 packageInfoWithBuild 初始 Hotfix Package 時,未正確設置 packgeaName 的問題。
Release v3.4.1
English
-
Adjusted access modifiers for certain parameters.
-
AssetLoader
- Adjusted
appconfig.jsonto differentiate write contents between built‑in and CDN. - Adjusted
BundleHelper.ExportAppConfigmethod to remove thesemanticRuleparameter.
- Adjusted
-
Hotfixer
- Added
GetAOTAssemblyNamesto get a cached list of AOT assembly names (including the “.dll” extension, e.g."mscorlib.dll"). - Added
GetHotfixAssemblyNamesto get a cached list of Hotfix assembly names (including the “.dll” extension, e.g."HotfixerDemo.Hotfix.Runtime.dll"). - Added
GetAotAssemblyNamesWithoutExtensionsto get a cached list of AOT assembly names (without the “.dll” extension, e.g."mscorlib"). - Added
GetHotfixAssemblyNamesWithoutExtensionsto get a cached list of Hotfix assembly names (without the “.dll” extension, e.g."HotfixerDemo.Hotfix.Runtime").
- Added
-
CoreFrame
- USFrame
- Added
SetActiveSceneRootGameObjectsAsync, an asynchronous method that spreads work across frames and lets you specify how many scene root GameObjects to activate per frame.
- Added
- USFrame
中文
-
調整部分參數存取權限。
-
AssetLoader
- 調整 appconfig.json 區分內置與 CDN 的寫入內容。
- 調整 BundleHelper.ExportAppConfig 方法,移除 semanticRule 參數。
-
Hotfixer
- 新增 GetAOTAssemblyNames 獲取 AOT 程序集名稱緩存清單方法 (包含 .dll 擴展名 -> ex: "mscorlib.dll")。
- 新增 GetHotfixAssemblyNames 獲取 Hotfix 程序集名稱緩存清單方法 (包含 .dll 擴展名 -> ex: "HotfixerDemo.Hotfix.Runtime.dll")。
- 新增 GetAotAssemblyNamesWithoutExtensions 獲取 AOT 程序集名稱緩存清單方法 (不包含 .dll 擴展名 -> ex: "mscorlib")。
- 新增 GetHotfixAssemblyNamesWithoutExtensions 獲取 Hotfix 程序集名稱緩存清單方法 (不包含 .dll 擴展名 -> ex: "HotfixerDemo.Hotfix.Runtime")。
-
CoreFrame
- USFrame
- 新增 SetActiveSceneRootGameObjectsAsync 異步方法,支持分散幀處理,可以設置每幾幀要顯示幾個場景根物件。
- USFrame
Release v3.4.0
[3.4.0] - 2025-07-11
English
-
Organized debug printing levels (Print, PrintWarning, PrintError, PrintException) to implement clear log level differentiation.
-
AssetLoader
- Added PatchLauncher configuration for Manifest Decrypt Info.
- Added
PatchLauncher.operationSystemMaxTimeSliceparameter configuration (Process Options) to set the YooAsset asynchronous system’s maximum time slice consumed per frame (in milliseconds). - Added
PatchLauncher.bundleLoadReadBufferSizeparameter configuration (Load Options) to configure the AssetBundle read buffer size (in bytes). - Added
PatchLauncher.bundleDecryptReadBufferSizeparameter configuration (Load Options) to configure the AssetBundle decryption read buffer size (in bytes). - Added an implementation of
ManifestServicesfor encrypting and decrypting YooAsset manifest file. - Optimized the
BundleConfigrelease workflow. - Removed the
YooAssetBridge.YooAssetSettingsData.GetYooResourcesFullPath()method. - Removed the MenuItem OxGFrame Pre-Export Built-in Catalog File (BuildinCatalog) used by YooAsset.
- Removed the unused
BuiltinPackageCatalogclass, including itsPatchSettingconfiguration parameters. - Upgraded YooAsset to v2.3.12.
-
NetFrame
- Modified the
INetTips.OnConnectionErrorparameter type toobject.
- Modified the
中文
-
整理 Debug 打印層級 (Print, PrintWarning, PrintError, PrintException),實現 Log Level 的區分。
-
AssetLoader
- 新增 PatchLauncher 對於 Manifest Decrypt Info 的配置。
- 新增 PatchLauncher.operationSystemMaxTimeSlice 參數配置 (Process Options),用於 YooAsset 的異步系統設置參數,每幀執行消耗的最大時間切片。
- 新增 PatchLauncher.bundleLoadReadBufferSizeh 參數配置 (Load Options),用於配置資源讀取緩衝大小。
- 新增 PatchLauncher.bundleDecryptReadBufferSize 參數配置 (Load Options),用於配置資源解密讀取緩衝大小。
- 新增 ManifestServices 實作,用於 YooAsset Manifest 清單的加解密。
- 優化 BundleConfig 釋放流程。
- 移除 YooAssetBridge.YooAssetSettingsData.GetYooResourcesFullPath() 方法。
- 移除 MenuItem -> OxGFrame Pre-Export Built-in Catalog File (BuildinCatalog) used by YooAsset。
- 移除未使用類別 BuiltinPackageCatalog,包含 PatchSetting 配置參數。
- 更新 YooAsset 至 v2.3.12。
-
NetFrame
- 修改 INetTips OnConnectionError 參數為 object 型別。
