From b971112ba92ba116a76a6dfbc2dde3a6f3d34095 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期四, 12 二月 2026 11:12:35 +0800
Subject: [PATCH] 编辑器 模拟使用资源部分

---
 /dev/null                                                        |   94 ---------
 Assets/AssetBundleCollectorSetting.asset                         |    2 
 Assets/Editor/YooAsset/YooAssetBuildTool.cs.meta                 |   11 +
 Assets/Resources/VersionConfigEx.txt                             |    2 
 Assets/Editor/YooAsset/YooAssetBuildTool.cs                      |  312 +++++++++++++++++++++++++++++++
 Assets/Launch/Launch.cs                                          |    6 
 Assets/Editor/YooAsset/AddressByRelativePath.cs                  |   20 -
 Assets/Launch/Manager/YooAssetInitializer.cs                     |   68 +++++-
 Assets/Editor/YooAsset/AddressByFolderAndFileNameWithExt.cs.meta |   11 +
 Assets/Launch/Config/AssetSource.cs                              |   18 -
 Assets/Editor/YooAsset/AddressByFolderAndFileNameWithExt.cs      |   26 ++
 11 files changed, 434 insertions(+), 136 deletions(-)

diff --git a/Assets/AssetBundleCollectorSetting.asset b/Assets/AssetBundleCollectorSetting.asset
index ee8bf94..1070ad3 100644
--- a/Assets/AssetBundleCollectorSetting.asset
+++ b/Assets/AssetBundleCollectorSetting.asset
@@ -168,7 +168,7 @@
       - CollectPath: Assets/ResourcesOut/UIEffect
         CollectorGUID: 62eb3abc624381e4b8950f355812a8e9
         CollectorType: 0
-        AddressRuleName: AddressByFolderAndFileName
+        AddressRuleName: AddressByFolderAndFileNameWithExt
         PackRuleName: PackDirectory
         FilterRuleName: CollectAll
         AssetTags: 
diff --git a/Assets/Editor/YooAsset/AddressByFolderAndFileNameWithExt.cs b/Assets/Editor/YooAsset/AddressByFolderAndFileNameWithExt.cs
new file mode 100644
index 0000000..1930955
--- /dev/null
+++ b/Assets/Editor/YooAsset/AddressByFolderAndFileNameWithExt.cs
@@ -0,0 +1,26 @@
+// ============================================================================
+// AddressByFolderAndFileNameWithExt.cs 鈥� 鑷畾涔� YooAsset 鍦板潃瑙勫垯
+// 浣跨敤 "鐩綍鍚峗鏂囦欢鍚�(鍚墿灞曞悕)" 浣滀负鍦板潃
+// 閬垮厤鍚岀洰褰曚笅鍚屽悕涓嶅悓鎵╁睍鍚嶆枃浠剁殑鍦板潃鍐茬獊
+// ============================================================================
+
+using System.IO;
+using YooAsset.Editor;
+
+/// <summary>
+/// 瀹氫綅鍦板潃 = 鏂囦欢鎵�鍦ㄧ洰褰曞悕 + "_" + 鏂囦欢鍚嶏紙鍚墿灞曞悕锛夈��
+/// 渚嬪 AssetPath = "Assets/ResourcesOut/UIEffect/BattleSpine/510013_Wei/attack_SkeletonData.asset"
+///      鈫� 鍦板潃 = "510013_Wei_attack_SkeletonData.asset"
+/// 涓庡唴缃� AddressByFolderAndFileName 鐨勫尯鍒細淇濈暀鏂囦欢鎵╁睍鍚嶏紝閬垮厤
+/// 鍚岀洰褰曚笅 .asset / .png 绛夊悓鍩虹鍚嶆枃浠剁殑鍦板潃鍐茬獊銆�
+/// </summary>
+[DisplayName("瀹氫綅鍦板潃: 鏂囦欢澶瑰悕+鏂囦欢鍚�(鍚墿灞曞悕)")]
+public class AddressByFolderAndFileNameWithExt : IAddressRule
+{
+    string IAddressRule.GetAssetAddress(AddressRuleData data)
+    {
+        string fileName = Path.GetFileName(data.AssetPath);
+        FileInfo fileInfo = new FileInfo(data.AssetPath);
+        return $"{fileInfo.Directory.Name}_{fileName}";
+    }
+}
diff --git a/Assets/Editor/YooAsset/AddressByFolderAndFileNameWithExt.cs.meta b/Assets/Editor/YooAsset/AddressByFolderAndFileNameWithExt.cs.meta
new file mode 100644
index 0000000..a3daafe
--- /dev/null
+++ b/Assets/Editor/YooAsset/AddressByFolderAndFileNameWithExt.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ee466724639fabe41acd8d9094a64c14
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Editor/YooAsset/AddressByRelativePath.cs b/Assets/Editor/YooAsset/AddressByRelativePath.cs
index 863311f..0f0a056 100644
--- a/Assets/Editor/YooAsset/AddressByRelativePath.cs
+++ b/Assets/Editor/YooAsset/AddressByRelativePath.cs
@@ -1,19 +1,21 @@
 // ============================================================================
 // AddressByRelativePath.cs 鈥� 鑷畾涔� YooAsset 鍦板潃瑙勫垯
-// 浣跨敤鐩稿浜� CollectPath 鐨勫畬鏁磋矾寰勶紙涓嶅惈鎵╁睍鍚嶏級浣滀负鍦板潃
-// 瑙e喅鍚� Package 鍐呬笉鍚屽瓙鐩綍涓嬪悓鍚嶆枃浠剁殑鍦板潃鍐茬獊
+// 浣跨敤鐩稿浜� CollectPath 鐨勫畬鏁磋矾寰勶紙鍚墿灞曞悕锛変綔涓哄湴鍧�
+// 閬垮厤鍚岀洰褰曚笅鍚屽悕涓嶅悓鎵╁睍鍚嶆枃浠剁殑鍦板潃鍐茬獊
 // ============================================================================
 
 using System.IO;
 using YooAsset.Editor;
 
 /// <summary>
-/// 瀹氫綅鍦板潃 = 璧勬簮鐩稿浜庢敹闆嗙洰褰曠殑璺緞锛堜笉鍚墿灞曞悕锛夈��
+/// 瀹氫綅鍦板潃 = 璧勬簮鐩稿浜庢敹闆嗙洰褰曠殑璺緞锛堝惈鎵╁睍鍚嶏級銆�
 /// 渚嬪 CollectPath = "Assets/ResourcesOut/Audio"
 ///      AssetPath  = "Assets/ResourcesOut/Audio/Battle/Effect/boom.wav"
-///      鈫� 鍦板潃 = "Battle/Effect/boom"
+///      鈫� 鍦板潃 = "Battle/Effect/boom.wav"
+/// 娉ㄦ剰锛歋upportExtensionless 浠嶄細涓� AssetPath 鑷姩鐢熸垚鏃犳墿灞曞悕鏄犲皠锛�
+/// 杩欓噷浠呮槸 Address 瀛楁淇濈暀鎵╁睍鍚嶄互閬垮厤鍐茬獊銆�
 /// </summary>
-[DisplayName("瀹氫綅鍦板潃: 鐩稿璺緞")]
+[DisplayName("瀹氫綅鍦板潃: 鐩稿璺緞(鍚墿灞曞悕)")]
 public class AddressByRelativePath : IAddressRule
 {
     string IAddressRule.GetAssetAddress(AddressRuleData data)
@@ -31,13 +33,7 @@
             relativePath = relativePath.Substring(collectRoot.Length);
         }
 
-        // 鍘绘帀鎵╁睍鍚�
-        string ext = Path.GetExtension(relativePath);
-        if (!string.IsNullOrEmpty(ext))
-        {
-            relativePath = relativePath.Substring(0, relativePath.Length - ext.Length);
-        }
-
+        // 淇濈暀鎵╁睍鍚嶏紝閬垮厤鍚屽悕涓嶅悓绫诲瀷鏂囦欢鍦板潃鍐茬獊
         return relativePath;
     }
 }
diff --git a/Assets/Editor/YooAsset/YooAssetBuildTool.cs b/Assets/Editor/YooAsset/YooAssetBuildTool.cs
new file mode 100644
index 0000000..fe33028
--- /dev/null
+++ b/Assets/Editor/YooAsset/YooAssetBuildTool.cs
@@ -0,0 +1,312 @@
+// ============================================================================
+// YooAssetBuildTool.cs 鈥� YooAsset 涓�閿墦鍖� & AB妯″紡鍒囨崲 Editor 宸ュ叿
+// 鑿滃崟璺緞: YooAsset宸ュ叿/
+// ============================================================================
+
+using System;
+using System.Diagnostics;
+using UnityEditor;
+using UnityEngine;
+using YooAsset;
+using YooAsset.Editor;
+using Debug = UnityEngine.Debug;
+
+public static class YooAssetBuildTool
+{
+    /// <summary>
+    /// 鎵�鏈夐渶瑕佹墦鍖呯殑 Package 鍚嶇О锛堜笌 AssetBundleCollectorSetting 涓�鑷达級
+    /// </summary>
+    private static readonly string[] ALL_PACKAGES = { "Prefab", "UI", "UIEffect", "Battle", "Audio" };
+
+    /// <summary>
+    /// 鐗堟湰鍙锋牸寮忥細鏃ユ湡+鏃堕棿
+    /// </summary>
+    private static string GenerateVersion()
+    {
+        return DateTime.Now.ToString("yyyy-MM-dd-HHmm");
+    }
+
+    // ====================================================================
+    // AB 妯″紡鍒囨崲
+    // ====================================================================
+
+    [MenuItem("YooAsset宸ュ叿/鍒囨崲AB妯″紡 (褰撳墠: 鍏抽棴)", false, 100)]
+    private static void ToggleABMode()
+    {
+        bool current = EditorPrefs.GetBool("YooAsset_UseAssetBundle", false);
+        bool next = !current;
+        EditorPrefs.SetBool("YooAsset_UseAssetBundle", next);
+
+        string modeDesc = next ? "OfflinePlayMode (闅忓寘妯″紡/AB妯″紡)" : "EditorSimulateMode (缂栬緫鍣ㄦā鎷熸ā寮�)";
+        Debug.Log($"[YooAssetBuildTool] AB妯″紡宸插垏鎹负: {(next ? "寮�鍚�" : "鍏抽棴")} 鈫� {modeDesc}");
+        EditorUtility.DisplayDialog("AB 妯″紡鍒囨崲",
+            $"AB 妯″紡宸瞷(next ? "寮�鍚�" : "鍏抽棴")}\n\n杩愯妯″紡: {modeDesc}\n\n" +
+            (next ? "璇风‘淇濆凡鎵撳寘璧勬簮鍒� StreamingAssets锛�" : "灏嗕娇鐢ㄧ紪杈戝櫒妯℃嫙妯″紡锛屾棤闇�鎵撳寘銆�"),
+            "纭畾");
+    }
+
+    [MenuItem("YooAsset宸ュ叿/鍒囨崲AB妯″紡 (褰撳墠: 鍏抽棴)", true)]
+    private static bool ToggleABModeValidate()
+    {
+        bool isOn = EditorPrefs.GetBool("YooAsset_UseAssetBundle", false);
+        Menu.SetChecked("YooAsset宸ュ叿/鍒囨崲AB妯″紡 (褰撳墠: 鍏抽棴)", isOn);
+        return true;
+    }
+
+    // ====================================================================
+    // 涓�閿墦鍖呮墍鏈� Package
+    // ====================================================================
+
+    [MenuItem("YooAsset宸ュ叿/涓�閿墦鍖呮墍鏈塒ackage (BuiltinBuildPipeline)", false, 200)]
+    private static void BuildAllPackages()
+    {
+        if (!EditorUtility.DisplayDialog("纭鎵撳寘",
+            $"灏嗕娇鐢� BuiltinBuildPipeline 鎵撳寘浠ヤ笅 {ALL_PACKAGES.Length} 涓� Package:\n" +
+            $"{string.Join(", ", ALL_PACKAGES)}\n\n" +
+            $"骞冲彴: {EditorUserBuildSettings.activeBuildTarget}\n" +
+            $"杈撳嚭: {AssetBundleBuilderHelper.GetDefaultBuildOutputRoot()}\n" +
+            $"骞惰嚜鍔ㄦ嫹璐濆埌 StreamingAssets\n\n鏄惁缁х画锛�",
+            "寮�濮嬫墦鍖�", "鍙栨秷"))
+        {
+            return;
+        }
+
+        string version = GenerateVersion();
+        int successCount = 0;
+        int failCount = 0;
+        var sw = Stopwatch.StartNew();
+
+        Debug.Log($"[YooAssetBuildTool] ========== 寮�濮嬫墦鍖� ==========");
+        Debug.Log($"[YooAssetBuildTool] 鐗堟湰鍙�: {version}");
+        Debug.Log($"[YooAssetBuildTool] 骞冲彴: {EditorUserBuildSettings.activeBuildTarget}");
+
+        for (int i = 0; i < ALL_PACKAGES.Length; i++)
+        {
+            string pkgName = ALL_PACKAGES[i];
+            EditorUtility.DisplayProgressBar("YooAsset 鎵撳寘涓�...",
+                $"姝e湪鎵撳寘 {pkgName} ({i + 1}/{ALL_PACKAGES.Length})",
+                (float)i / ALL_PACKAGES.Length);
+
+            bool ok = BuildSinglePackage(pkgName, version);
+            if (ok)
+                successCount++;
+            else
+                failCount++;
+        }
+
+        EditorUtility.ClearProgressBar();
+        sw.Stop();
+
+        string summary = $"鎵撳寘瀹屾垚锛佹垚鍔�: {successCount}, 澶辫触: {failCount}, 鑰楁椂: {sw.Elapsed.TotalSeconds:F1}绉�";
+        Debug.Log($"[YooAssetBuildTool] ========== {summary} ==========");
+
+        if (failCount > 0)
+        {
+            EditorUtility.DisplayDialog("鎵撳寘瀹屾垚锛堟湁澶辫触锛�", summary + "\n\n璇锋鏌� Console 鏃ュ織涓殑閿欒淇℃伅銆�", "纭畾");
+        }
+        else
+        {
+            bool toggleAB = EditorUtility.DisplayDialog("鎵撳寘鎴愬姛锛�", summary + "\n\n鏄惁绔嬪嵆寮�鍚� AB 妯″紡锛�", "寮�鍚疉B妯″紡", "鏆備笉寮�鍚�");
+            if (toggleAB)
+            {
+                EditorPrefs.SetBool("YooAsset_UseAssetBundle", true);
+                Debug.Log("[YooAssetBuildTool] AB妯″紡宸插紑鍚紝杩愯妯″紡: OfflinePlayMode");
+            }
+        }
+
+        AssetDatabase.Refresh();
+    }
+
+    // ====================================================================
+    // 鍗曚釜 Package 鎵撳寘
+    // ====================================================================
+
+    [MenuItem("YooAsset宸ュ叿/鎵撳寘鍗曚釜Package/Prefab", false, 300)]
+    private static void BuildPrefab() => BuildSingleWithDialog("Prefab");
+
+    [MenuItem("YooAsset宸ュ叿/鎵撳寘鍗曚釜Package/UI", false, 301)]
+    private static void BuildUI() => BuildSingleWithDialog("UI");
+
+    [MenuItem("YooAsset宸ュ叿/鎵撳寘鍗曚釜Package/UIEffect", false, 302)]
+    private static void BuildUIEffect() => BuildSingleWithDialog("UIEffect");
+
+    [MenuItem("YooAsset宸ュ叿/鎵撳寘鍗曚釜Package/Battle", false, 303)]
+    private static void BuildBattle() => BuildSingleWithDialog("Battle");
+
+    [MenuItem("YooAsset宸ュ叿/鎵撳寘鍗曚釜Package/Audio", false, 304)]
+    private static void BuildAudio() => BuildSingleWithDialog("Audio");
+
+    private static void BuildSingleWithDialog(string packageName)
+    {
+        string version = GenerateVersion();
+        if (!EditorUtility.DisplayDialog("纭鎵撳寘",
+            $"鎵撳寘 Package: {packageName}\n鐗堟湰: {version}\n骞冲彴: {EditorUserBuildSettings.activeBuildTarget}",
+            "寮�濮�", "鍙栨秷"))
+        {
+            return;
+        }
+
+        EditorUtility.DisplayProgressBar("YooAsset 鎵撳寘涓�...", $"姝e湪鎵撳寘 {packageName}...", 0.5f);
+        bool ok = BuildSinglePackage(packageName, version);
+        EditorUtility.ClearProgressBar();
+
+        if (ok)
+        {
+            EditorUtility.DisplayDialog("鎵撳寘鎴愬姛", $"Package '{packageName}' 鎵撳寘瀹屾垚锛�", "纭畾");
+        }
+        else
+        {
+            EditorUtility.DisplayDialog("鎵撳寘澶辫触", $"Package '{packageName}' 鎵撳寘澶辫触锛岃鏌ョ湅 Console 鏃ュ織銆�", "纭畾");
+        }
+
+        AssetDatabase.Refresh();
+    }
+
+    /// <summary>
+    /// 鎵撳寘鍗曚釜 Package
+    /// </summary>
+    private static bool BuildSinglePackage(string packageName, string version)
+    {
+        try
+        {
+            Debug.Log($"[YooAssetBuildTool] 寮�濮嬫墦鍖� Package: {packageName}, 鐗堟湰: {version}");
+
+            var buildParameters = new BuiltinBuildParameters();
+            buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
+            buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
+            buildParameters.BuildPipeline = EBuildPipeline.BuiltinBuildPipeline.ToString();
+            buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle;
+            buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget;
+            buildParameters.PackageName = packageName;
+            buildParameters.PackageVersion = version;
+            buildParameters.EnableSharePackRule = true;
+            buildParameters.VerifyBuildingResult = true;
+            buildParameters.FileNameStyle = EFileNameStyle.HashName;
+            buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.ClearAndCopyAll;
+            buildParameters.BuildinFileCopyParams = string.Empty;
+            buildParameters.CompressOption = ECompressOption.LZ4;
+            buildParameters.ClearBuildCacheFiles = false;
+            buildParameters.UseAssetDependencyDB = true;
+            buildParameters.EncryptionServices = null;
+
+            var pipeline = new BuiltinBuildPipeline();
+            BuildResult buildResult = pipeline.Run(buildParameters, true);
+
+            if (buildResult.Success)
+            {
+                Debug.Log($"[YooAssetBuildTool] 鉁� Package '{packageName}' 鎵撳寘鎴愬姛锛佽緭鍑�: {buildResult.OutputPackageDirectory}");
+                return true;
+            }
+            else
+            {
+                Debug.LogError($"[YooAssetBuildTool] 鉁� Package '{packageName}' 鎵撳寘澶辫触: Task={buildResult.FailedTask}, Error={buildResult.ErrorInfo}");
+                return false;
+            }
+        }
+        catch (Exception ex)
+        {
+            Debug.LogError($"[YooAssetBuildTool] 鉁� Package '{packageName}' 鎵撳寘寮傚父: {ex}");
+            return false;
+        }
+    }
+
+    // ====================================================================
+    // 娓呯悊宸ュ叿
+    // ====================================================================
+
+    [MenuItem("YooAsset宸ュ叿/娓呯悊 StreamingAssets 涓殑 YooAsset 璧勬簮", false, 400)]
+    private static void CleanStreamingAssets()
+    {
+        string root = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
+        if (!System.IO.Directory.Exists(root))
+        {
+            EditorUtility.DisplayDialog("娓呯悊", "StreamingAssets 涓病鏈� YooAsset 璧勬簮銆�", "纭畾");
+            return;
+        }
+
+        if (EditorUtility.DisplayDialog("纭娓呯悊",
+            $"灏嗗垹闄� StreamingAssets 涓殑鎵�鏈� YooAsset 璧勬簮:\n{root}\n\n鏄惁缁х画锛�",
+            "鍒犻櫎", "鍙栨秷"))
+        {
+            System.IO.Directory.Delete(root, true);
+            // 鍚屾椂鍒犻櫎 .meta 鏂囦欢
+            string metaPath = root + ".meta";
+            if (System.IO.File.Exists(metaPath))
+                System.IO.File.Delete(metaPath);
+
+            AssetDatabase.Refresh();
+            Debug.Log($"[YooAssetBuildTool] 宸叉竻鐞�: {root}");
+            EditorUtility.DisplayDialog("娓呯悊瀹屾垚", "StreamingAssets 涓殑 YooAsset 璧勬簮宸叉竻鐞嗐��", "纭畾");
+        }
+    }
+
+    [MenuItem("YooAsset宸ュ叿/娓呯悊 Bundles 鏋勫缓杈撳嚭鐩綍", false, 401)]
+    private static void CleanBuildOutput()
+    {
+        string root = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
+        if (!System.IO.Directory.Exists(root))
+        {
+            EditorUtility.DisplayDialog("娓呯悊", "Bundles 鏋勫缓杈撳嚭鐩綍涓嶅瓨鍦ㄣ��", "纭畾");
+            return;
+        }
+
+        if (EditorUtility.DisplayDialog("纭娓呯悊",
+            $"灏嗗垹闄ゆ墍鏈夋瀯寤鸿緭鍑�:\n{root}\n\n鏄惁缁х画锛�",
+            "鍒犻櫎", "鍙栨秷"))
+        {
+            System.IO.Directory.Delete(root, true);
+            Debug.Log($"[YooAssetBuildTool] 宸叉竻鐞�: {root}");
+            EditorUtility.DisplayDialog("娓呯悊瀹屾垚", "Bundles 鏋勫缓杈撳嚭鐩綍宸叉竻鐞嗐��", "纭畾");
+        }
+    }
+
+    // ====================================================================
+    // 鐘舵�佹煡鐪�
+    // ====================================================================
+
+    [MenuItem("YooAsset宸ュ叿/鏌ョ湅褰撳墠鐘舵��", false, 500)]
+    private static void ShowStatus()
+    {
+        bool isABMode = EditorPrefs.GetBool("YooAsset_UseAssetBundle", false);
+        string streamingRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
+        string buildRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
+
+        string streamingStatus = "鏈壘鍒�";
+        if (System.IO.Directory.Exists(streamingRoot))
+        {
+            var dirs = System.IO.Directory.GetDirectories(streamingRoot);
+            streamingStatus = $"瀛樺湪 ({dirs.Length} 涓瓙鐩綍)";
+            foreach (var d in dirs)
+            {
+                streamingStatus += $"\n  - {System.IO.Path.GetFileName(d)}";
+            }
+        }
+
+        string buildStatus = "鏈壘鍒�";
+        if (System.IO.Directory.Exists(buildRoot))
+        {
+            string platformDir = System.IO.Path.Combine(buildRoot, EditorUserBuildSettings.activeBuildTarget.ToString());
+            if (System.IO.Directory.Exists(platformDir))
+            {
+                var dirs = System.IO.Directory.GetDirectories(platformDir);
+                buildStatus = $"瀛樺湪 ({dirs.Length} 涓寘)";
+                foreach (var d in dirs)
+                {
+                    buildStatus += $"\n  - {System.IO.Path.GetFileName(d)}";
+                }
+            }
+            else
+            {
+                buildStatus = "瀛樺湪浣嗘棤褰撳墠骞冲彴鏋勫缓";
+            }
+        }
+
+        string msg =
+            $"AB 妯″紡: {(isABMode ? "寮�鍚� (OfflinePlayMode)" : "鍏抽棴 (EditorSimulateMode)")}\n\n" +
+            $"骞冲彴: {EditorUserBuildSettings.activeBuildTarget}\n\n" +
+            $"StreamingAssets ({streamingRoot}):\n{streamingStatus}\n\n" +
+            $"鏋勫缓杈撳嚭 ({buildRoot}):\n{buildStatus}";
+
+        EditorUtility.DisplayDialog("YooAsset 鐘舵��", msg, "纭畾");
+    }
+}
diff --git a/Assets/Editor/YooAsset/YooAssetBuildTool.cs.meta b/Assets/Editor/YooAsset/YooAssetBuildTool.cs.meta
new file mode 100644
index 0000000..a427715
--- /dev/null
+++ b/Assets/Editor/YooAsset/YooAssetBuildTool.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1340abe152ecbfb41aca6902e7cc7708
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Launch/Config/AssetSource.cs b/Assets/Launch/Config/AssetSource.cs
index 8e30144..a8279ae 100644
--- a/Assets/Launch/Config/AssetSource.cs
+++ b/Assets/Launch/Config/AssetSource.cs
@@ -1,24 +1,18 @@
-锘縰sing System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
+锘縰sing UnityEngine;
 
 
 public class AssetSource
 {
+    /// <summary>
+    /// 缂栬緫鍣ㄤ笅閫氳繃 EditorPrefs 鎸佷箙鍖� AB 妯″紡寮�鍏筹紙涓嶅彈 PlayerPrefs 娓呯悊褰卞搷锛夈��
+    /// 闈炵紪杈戝櫒鐜濮嬬粓杩斿洖 true銆�
+    /// </summary>
     public static bool isUseAssetBundle
     {
         get
         {
 #if UNITY_EDITOR
-            //鏈満娴嬭瘯涓嬭浇璧勬簮 闇�鎷疯礉鍩烘湰鏂囨湰璧勬簮鍒� Assets\StreamingAssets\android涓嬶紝涓轰簡鏂逛究鐩存帴鎷疯礉鎵�鏈夎祫婧愬嵆鍙�
-            if (!PlayerPrefs.HasKey("InGameDownLoadTestEanble"))
-            {
-                return false;
-            }
-            else
-            {
-                return PlayerPrefs.GetInt("InGameDownLoadTestEanble") == 1;
-            }
+            return UnityEditor.EditorPrefs.GetBool("YooAsset_UseAssetBundle", false);
 #else
             return true;
 #endif
diff --git a/Assets/Launch/Launch.cs b/Assets/Launch/Launch.cs
index 045c506..0266eeb 100644
--- a/Assets/Launch/Launch.cs
+++ b/Assets/Launch/Launch.cs
@@ -52,7 +52,7 @@
 
         m_Instance = this;
 
-#if !UNITY_EDITOR && !UNITY_WEBGL
+#if !UNITY_EDITOR
         if (File.Exists(Directory.GetParent(Application.persistentDataPath) + "/Debug") ||
         LocalSave.GetString("#@#BrancH") != string.Empty)
         {
@@ -91,7 +91,9 @@
         try
         {
 #if UNITY_EDITOR
-            var playMode = EPlayMode.EditorSimulateMode;
+            // 缂栬緫鍣ㄤ笅锛氬鏋滃紑鍚簡 AB 妯″紡锛圓ssetSource.isUseAssetBundle锛夛紝浣跨敤 OfflinePlayMode锛堥殢鍖呮ā寮忥級
+            // 鍚﹀垯浣跨敤 EditorSimulateMode锛堟棤闇�鎵撳寘鍗冲彲杩愯锛�
+            var playMode = AssetSource.isUseAssetBundle ? EPlayMode.OfflinePlayMode : EPlayMode.EditorSimulateMode;
 #elif UNITY_WEBGL
             var playMode = EPlayMode.WebPlayMode;
 #else
diff --git a/Assets/Launch/Manager/YooAssetInitializer.cs b/Assets/Launch/Manager/YooAssetInitializer.cs
index 0fa373c..2d96519 100644
--- a/Assets/Launch/Manager/YooAssetInitializer.cs
+++ b/Assets/Launch/Manager/YooAssetInitializer.cs
@@ -119,15 +119,33 @@
             {
                 try
                 {
-                    var package = YooAssets.CreatePackage(pkgName);
-                    var initParams = CreateInitParameters(playMode, remoteServices, pkgName);
+                    // 鍏堥獙璇佸垵濮嬪寲鍙傛暟锛堝 SimulateBuild锛夛紝閬垮厤 CreatePackage 鍚庢姏寮傚父鐣欎笅鍍靛案鍖呰9
+                    InitializeParameters initParams;
+                    try
+                    {
+                        initParams = CreateInitParameters(playMode, remoteServices, pkgName);
+                    }
+                    catch (Exception paramEx)
+                    {
+                        Debug.LogError($"[YooAssetInitializer] Package '{pkgName}' CreateInitParameters FAILED (skipped): {paramEx.Message}\n{paramEx.StackTrace}");
+                        continue;
+                    }
 
+                    var package = YooAssets.CreatePackage(pkgName);
                     var initOp = package.InitializeAsync(initParams);
                     await initOp.ToUniTask();
 
                     if (initOp.Status != EOperationStatus.Succeed)
                     {
                         Debug.LogWarning($"[YooAssetInitializer] Package '{pkgName}' init failed: {initOp.Error}");
+                        // 娓呯悊澶辫触鐨勫寘瑁癸紝閬垮厤鍍靛案鍖呰9
+                        try
+                        {
+                            var destroyOp = package.DestroyAsync();
+                            await destroyOp.ToUniTask();
+                            YooAssets.RemovePackage(pkgName);
+                        }
+                        catch { /* ignore cleanup errors */ }
                         continue;
                     }
 
@@ -145,7 +163,25 @@
                 }
                 catch (Exception ex)
                 {
-                    // EditorSimulateMode 涓嬪寘涓嶅湪 Collector 涓細鎶涘紓甯革紝璺宠繃鍗冲彲
+                    // 濡傛灉 CreatePackage 鎴愬姛浣嗗悗缁け璐ワ紝娓呯悊鍍靛案鍖呰9
+                    var zombiePkg = YooAssets.TryGetPackage(pkgName);
+                    if (zombiePkg != null)
+                    {
+                        try
+                        {
+                            if (zombiePkg.InitializeStatus == EOperationStatus.None)
+                            {
+                                // 鏈垵濮嬪寲鍙互鐩存帴绉婚櫎
+                                YooAssets.RemovePackage(pkgName);
+                            }
+                            else
+                            {
+                                // 宸插垵濮嬪寲闇�鍏堥攢姣佸啀绉婚櫎锛堜絾杩欓噷鏄� catch 鍧楋紝鏃犳硶 await锛�
+                                // 閰嶅悎 YooAssetService 鐨勮嚜鎰堟満鍒跺鐞�
+                            }
+                        }
+                        catch { /* ignore cleanup errors */ }
+                    }
                     Debug.LogWarning($"[YooAssetInitializer] Package '{pkgName}' init exception (skipped): {ex.Message}");
                 }
             }
@@ -159,7 +195,20 @@
             }
 
             State = InitState.Initialized;
-            Debug.Log($"[YooAssetInitializer] Initialized {successCount}/{names.Length} packages with PlayMode={playMode}");
+            // 杈撳嚭鍒濆鍖栨憳瑕�
+            var failedPkgs = new System.Collections.Generic.List<string>();
+            foreach (var pkgN in names)
+            {
+                if (!_packages.ContainsKey(pkgN))
+                    failedPkgs.Add(pkgN);
+            }
+            if (failedPkgs.Count > 0)
+            {
+                Debug.LogError($"[YooAssetInitializer] {failedPkgs.Count} package(s) FAILED: [{string.Join(", ", failedPkgs)}]. " +
+                    "Check earlier console errors (look for 'CreateInitParameters FAILED' or 'SimulateBuild' errors).");
+            }
+            Debug.Log($"[YooAssetInitializer] Initialized {successCount}/{names.Length} packages with PlayMode={playMode}. " +
+                $"Active: [{string.Join(", ", _packages.Keys)}]");
         }
         catch (Exception ex)
         {
@@ -175,22 +224,13 @@
 
     /// <summary>
     /// 璇锋眰鏈�鏂扮増鏈彿骞舵洿鏂� Manifest锛堝鎵�鏈夊凡鍒濆鍖栫殑鍖呰9锛夈��
-    /// 浠呭湪 HostPlayMode 涓嬫湁鎰忎箟锛孍ditorSimulateMode / OfflinePlayMode 涓嬭烦杩囥��
+    /// 鎵�鏈夎繍琛屾ā寮忛兘闇�瑕佹墽琛屾姝ラ浠ュ姞杞� ActiveManifest銆�
     /// </summary>
     public async UniTask RequestVersionAndUpdateAsync()
     {
         if (State != InitState.Initialized)
         {
             Debug.LogWarning($"[YooAssetInitializer] Invalid state for RequestVersionAndUpdate: {State}");
-            return;
-        }
-
-        // EditorSimulateMode / OfflinePlayMode 涓嶉渶瑕佽繙绋嬬増鏈鐞�
-        if (_playMode == EPlayMode.EditorSimulateMode || _playMode == EPlayMode.OfflinePlayMode)
-        {
-            State = InitState.VersionChecked;
-            State = InitState.Ready;
-            Debug.Log("[YooAssetInitializer] Skipped version check (local mode). State 鈫� Ready");
             return;
         }
 
diff --git a/Assets/Resources/VersionConfigEx.txt b/Assets/Resources/VersionConfigEx.txt
index 112d12a..4789d2b 100644
--- a/Assets/Resources/VersionConfigEx.txt
+++ b/Assets/Resources/VersionConfigEx.txt
@@ -1 +1 @@
-{"m_AppId":"test","m_SpID":"test","m_VersionAuthority":0,"m_Version":"1.0.1","m_ClientPackageFlag":"2021","m_Branch":1,"m_AssetAccess":0,"m_PartAssetPackage":false,"m_ProductName":"鍍忕礌涓夊浗","m_BundleIdentifier":"com.wgyx.xssg","m_KeystoreFileName":"wgyx","m_KeystorePassword":"wgyx2025","m_KeystoreAlias":"wgyx","m_KeystoreAliasPassword":"wgyx2025","m_AppleDeveloperTeamID":"","m_DebugVersion":true,"m_IsBanShu":false,"m_BuildTime":"","m_BuildIndex":6,"m_LogoPosition":{"x":-32.0,"y":144.0},"m_BanHao":"","m_SdkFileName":""}
\ No newline at end of file
+{"m_AppId":"test","m_SpID":"test","m_VersionAuthority":0,"m_Version":"1.0.1","m_ClientPackageFlag":"2021","m_Branch":1,"m_AssetAccess":3,"m_PartAssetPackage":false,"m_ProductName":"鍍忕礌涓夊浗","m_BundleIdentifier":"com.wgyx.xssg","m_KeystoreFileName":"wgyx","m_KeystorePassword":"wgyx2025","m_KeystoreAlias":"wgyx","m_KeystoreAliasPassword":"wgyx2025","m_AppleDeveloperTeamID":"","m_DebugVersion":true,"m_IsBanShu":false,"m_BuildTime":"","m_BuildIndex":6,"m_LogoPosition":{"x":-32.0,"y":144.0},"m_BanHao":"","m_SdkFileName":""}
\ No newline at end of file
diff --git a/Bundles/StandaloneWindows64/Prefab/1.0.0/1f8cbe9dbf06ffa6eaf99cb5355a8dca.bundle b/Bundles/StandaloneWindows64/Prefab/1.0.0/1f8cbe9dbf06ffa6eaf99cb5355a8dca.bundle
deleted file mode 100644
index 68fdfdc..0000000
--- a/Bundles/StandaloneWindows64/Prefab/1.0.0/1f8cbe9dbf06ffa6eaf99cb5355a8dca.bundle
+++ /dev/null
Binary files differ
diff --git a/Bundles/StandaloneWindows64/Prefab/1.0.0/987c91cb69c16c4a3d52f120133936c0.bundle b/Bundles/StandaloneWindows64/Prefab/1.0.0/987c91cb69c16c4a3d52f120133936c0.bundle
deleted file mode 100644
index 66992ec..0000000
--- a/Bundles/StandaloneWindows64/Prefab/1.0.0/987c91cb69c16c4a3d52f120133936c0.bundle
+++ /dev/null
Binary files differ
diff --git a/Bundles/StandaloneWindows64/Prefab/1.0.0/BuildinCatalog.bytes b/Bundles/StandaloneWindows64/Prefab/1.0.0/BuildinCatalog.bytes
deleted file mode 100644
index ef75333..0000000
--- a/Bundles/StandaloneWindows64/Prefab/1.0.0/BuildinCatalog.bytes
+++ /dev/null
Binary files differ
diff --git a/Bundles/StandaloneWindows64/Prefab/1.0.0/BuildinCatalog.json b/Bundles/StandaloneWindows64/Prefab/1.0.0/BuildinCatalog.json
deleted file mode 100644
index b1e34d1..0000000
--- a/Bundles/StandaloneWindows64/Prefab/1.0.0/BuildinCatalog.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-    "FileVersion": "1.0.0",
-    "PackageName": "Prefab",
-    "PackageVersion": "1.0.0",
-    "Wrappers": [
-        {
-            "BundleGUID": "1f8cbe9dbf06ffa6eaf99cb5355a8dca",
-            "FileName": "1f8cbe9dbf06ffa6eaf99cb5355a8dca.bundle"
-        },
-        {
-            "BundleGUID": "987c91cb69c16c4a3d52f120133936c0",
-            "FileName": "987c91cb69c16c4a3d52f120133936c0.bundle"
-        }
-    ]
-}
\ No newline at end of file
diff --git a/Bundles/StandaloneWindows64/Prefab/1.0.0/OutputCache b/Bundles/StandaloneWindows64/Prefab/1.0.0/OutputCache
deleted file mode 100644
index c75c665..0000000
--- a/Bundles/StandaloneWindows64/Prefab/1.0.0/OutputCache
+++ /dev/null
Binary files differ
diff --git a/Bundles/StandaloneWindows64/Prefab/1.0.0/OutputCache.manifest b/Bundles/StandaloneWindows64/Prefab/1.0.0/OutputCache.manifest
deleted file mode 100644
index 09b5ca8..0000000
--- a/Bundles/StandaloneWindows64/Prefab/1.0.0/OutputCache.manifest
+++ /dev/null
@@ -1,10 +0,0 @@
-ManifestFileVersion: 0
-CRC: 2199417868
-AssetBundleManifest:
-  AssetBundleInfos:
-    Info_0:
-      Name: prefab_assets_resourcesout_prefab_battle.bundle
-      Dependencies: {}
-    Info_1:
-      Name: prefab_assets_resourcesout_prefab_place.bundle
-      Dependencies: {}
diff --git a/Bundles/StandaloneWindows64/Prefab/1.0.0/Prefab.version b/Bundles/StandaloneWindows64/Prefab/1.0.0/Prefab.version
deleted file mode 100644
index afaf360..0000000
--- a/Bundles/StandaloneWindows64/Prefab/1.0.0/Prefab.version
+++ /dev/null
@@ -1 +0,0 @@
-1.0.0
\ No newline at end of file
diff --git a/Bundles/StandaloneWindows64/Prefab/1.0.0/Prefab_1.0.0.bytes b/Bundles/StandaloneWindows64/Prefab/1.0.0/Prefab_1.0.0.bytes
deleted file mode 100644
index 9577e58..0000000
--- a/Bundles/StandaloneWindows64/Prefab/1.0.0/Prefab_1.0.0.bytes
+++ /dev/null
Binary files differ
diff --git a/Bundles/StandaloneWindows64/Prefab/1.0.0/Prefab_1.0.0.hash b/Bundles/StandaloneWindows64/Prefab/1.0.0/Prefab_1.0.0.hash
deleted file mode 100644
index 46417c8..0000000
--- a/Bundles/StandaloneWindows64/Prefab/1.0.0/Prefab_1.0.0.hash
+++ /dev/null
@@ -1 +0,0 @@
-9b7e0ad1
\ No newline at end of file
diff --git a/Bundles/StandaloneWindows64/Prefab/1.0.0/Prefab_1.0.0.json b/Bundles/StandaloneWindows64/Prefab/1.0.0/Prefab_1.0.0.json
deleted file mode 100644
index bbc690c..0000000
--- a/Bundles/StandaloneWindows64/Prefab/1.0.0/Prefab_1.0.0.json
+++ /dev/null
@@ -1,52 +0,0 @@
-{
-    "FileVersion": "2.3.1",
-    "EnableAddressable": true,
-    "LocationToLower": false,
-    "IncludeAssetGUID": true,
-    "OutputNameStyle": 0,
-    "BuildBundleType": 2,
-    "BuildPipeline": "BuiltinBuildPipeline",
-    "PackageName": "Prefab",
-    "PackageVersion": "1.0.0",
-    "PackageNote": "2025/4/28 15:42:35",
-    "AssetList": [
-        {
-            "Address": "Battle_BattleCamera",
-            "AssetPath": "Assets/ResourcesOut/Prefab/Battle/BattleCamera.prefab",
-            "AssetGUID": "50000ac0b3be7e746805d7cdfe64ce26",
-            "AssetTags": [],
-            "BundleID": 0,
-            "DependBundleIDs": []
-        },
-        {
-            "Address": "Place_PlaceCamera",
-            "AssetPath": "Assets/ResourcesOut/Prefab/Place/PlaceCamera.prefab",
-            "AssetGUID": "0620648c5c6542d4bb08f6bbb079a425",
-            "AssetTags": [],
-            "BundleID": 1,
-            "DependBundleIDs": []
-        }
-    ],
-    "BundleList": [
-        {
-            "BundleName": "prefab_assets_resourcesout_prefab_battle.bundle",
-            "UnityCRC": 1791643228,
-            "FileHash": "987c91cb69c16c4a3d52f120133936c0",
-            "FileCRC": "0077497f",
-            "FileSize": 2919,
-            "Encrypted": false,
-            "Tags": [],
-            "DependBundleIDs": []
-        },
-        {
-            "BundleName": "prefab_assets_resourcesout_prefab_place.bundle",
-            "UnityCRC": 3240290592,
-            "FileHash": "1f8cbe9dbf06ffa6eaf99cb5355a8dca",
-            "FileCRC": "92401681",
-            "FileSize": 2927,
-            "Encrypted": false,
-            "Tags": [],
-            "DependBundleIDs": []
-        }
-    ]
-}
\ No newline at end of file
diff --git a/Bundles/StandaloneWindows64/Prefab/1.0.0/Prefab_1.0.0.report b/Bundles/StandaloneWindows64/Prefab/1.0.0/Prefab_1.0.0.report
deleted file mode 100644
index f01057a..0000000
--- a/Bundles/StandaloneWindows64/Prefab/1.0.0/Prefab_1.0.0.report
+++ /dev/null
@@ -1,99 +0,0 @@
-{
-    "Summary": {
-        "YooVersion": "2.3.8",
-        "UnityVersion": "2022.3.34f1c1",
-        "BuildDate": "2025/4/28 15:42:36",
-        "BuildSeconds": 0,
-        "BuildTarget": 19,
-        "BuildPipeline": "BuiltinBuildPipeline",
-        "BuildBundleType": 2,
-        "BuildPackageName": "Prefab",
-        "BuildPackageVersion": "1.0.0",
-        "BuildPackageNote": "2025/4/28 15:42:35",
-        "UniqueBundleName": true,
-        "EnableAddressable": true,
-        "LocationToLower": false,
-        "IncludeAssetGUID": true,
-        "AutoCollectShaders": true,
-        "IgnoreRuleName": "YooAsset.Editor.NormalIgnoreRule",
-        "ClearBuildCacheFiles": false,
-        "UseAssetDependencyDB": false,
-        "EnableSharePackRule": true,
-        "SingleReferencedPackAlone": true,
-        "EncryptionClassName": "null",
-        "FileNameStyle": 0,
-        "CompressOption": 2,
-        "DisableWriteTypeTree": false,
-        "IgnoreTypeTreeChanges": true,
-        "WriteLinkXML": true,
-        "CacheServerHost": "",
-        "CacheServerPort": 0,
-        "BuiltinShadersBundleName": "",
-        "MonoScriptsBundleName": "",
-        "AssetFileTotalCount": 2,
-        "MainAssetTotalCount": 2,
-        "AllBundleTotalCount": 2,
-        "AllBundleTotalSize": 5846,
-        "EncryptedBundleTotalCount": 0,
-        "EncryptedBundleTotalSize": 0
-    },
-    "AssetInfos": [
-        {
-            "Address": "Battle_BattleCamera",
-            "AssetPath": "Assets/ResourcesOut/Prefab/Battle/BattleCamera.prefab",
-            "AssetGUID": "50000ac0b3be7e746805d7cdfe64ce26",
-            "AssetTags": [],
-            "MainBundleName": "prefab_assets_resourcesout_prefab_battle.bundle",
-            "MainBundleSize": 2919,
-            "DependAssets": [],
-            "DependBundles": []
-        },
-        {
-            "Address": "Place_PlaceCamera",
-            "AssetPath": "Assets/ResourcesOut/Prefab/Place/PlaceCamera.prefab",
-            "AssetGUID": "0620648c5c6542d4bb08f6bbb079a425",
-            "AssetTags": [],
-            "MainBundleName": "prefab_assets_resourcesout_prefab_place.bundle",
-            "MainBundleSize": 2927,
-            "DependAssets": [],
-            "DependBundles": []
-        }
-    ],
-    "BundleInfos": [
-        {
-            "BundleName": "prefab_assets_resourcesout_prefab_battle.bundle",
-            "FileName": "987c91cb69c16c4a3d52f120133936c0.bundle",
-            "FileHash": "987c91cb69c16c4a3d52f120133936c0",
-            "FileCRC": "0077497f",
-            "FileSize": 2919,
-            "Encrypted": false,
-            "Tags": [],
-            "DependBundles": [],
-            "ReferenceBundles": [],
-            "BundleContents": [
-                {
-                    "AssetPath": "Assets/ResourcesOut/Prefab/Battle/BattleCamera.prefab",
-                    "AssetGUID": "50000ac0b3be7e746805d7cdfe64ce26"
-                }
-            ]
-        },
-        {
-            "BundleName": "prefab_assets_resourcesout_prefab_place.bundle",
-            "FileName": "1f8cbe9dbf06ffa6eaf99cb5355a8dca.bundle",
-            "FileHash": "1f8cbe9dbf06ffa6eaf99cb5355a8dca",
-            "FileCRC": "92401681",
-            "FileSize": 2927,
-            "Encrypted": false,
-            "Tags": [],
-            "DependBundles": [],
-            "ReferenceBundles": [],
-            "BundleContents": [
-                {
-                    "AssetPath": "Assets/ResourcesOut/Prefab/Place/PlaceCamera.prefab",
-                    "AssetGUID": "0620648c5c6542d4bb08f6bbb079a425"
-                }
-            ]
-        }
-    ],
-    "IndependAssets": []
-}
\ No newline at end of file
diff --git a/Bundles/StandaloneWindows64/Prefab/OutputCache/OutputCache b/Bundles/StandaloneWindows64/Prefab/OutputCache/OutputCache
deleted file mode 100644
index c75c665..0000000
--- a/Bundles/StandaloneWindows64/Prefab/OutputCache/OutputCache
+++ /dev/null
Binary files differ
diff --git a/Bundles/StandaloneWindows64/Prefab/OutputCache/OutputCache.manifest b/Bundles/StandaloneWindows64/Prefab/OutputCache/OutputCache.manifest
deleted file mode 100644
index 09b5ca8..0000000
--- a/Bundles/StandaloneWindows64/Prefab/OutputCache/OutputCache.manifest
+++ /dev/null
@@ -1,10 +0,0 @@
-ManifestFileVersion: 0
-CRC: 2199417868
-AssetBundleManifest:
-  AssetBundleInfos:
-    Info_0:
-      Name: prefab_assets_resourcesout_prefab_battle.bundle
-      Dependencies: {}
-    Info_1:
-      Name: prefab_assets_resourcesout_prefab_place.bundle
-      Dependencies: {}
diff --git a/Bundles/StandaloneWindows64/Prefab/OutputCache/prefab_assets_resourcesout_prefab_battle.bundle b/Bundles/StandaloneWindows64/Prefab/OutputCache/prefab_assets_resourcesout_prefab_battle.bundle
deleted file mode 100644
index 66992ec..0000000
--- a/Bundles/StandaloneWindows64/Prefab/OutputCache/prefab_assets_resourcesout_prefab_battle.bundle
+++ /dev/null
Binary files differ
diff --git a/Bundles/StandaloneWindows64/Prefab/OutputCache/prefab_assets_resourcesout_prefab_battle.bundle.manifest b/Bundles/StandaloneWindows64/Prefab/OutputCache/prefab_assets_resourcesout_prefab_battle.bundle.manifest
deleted file mode 100644
index 66671d9..0000000
--- a/Bundles/StandaloneWindows64/Prefab/OutputCache/prefab_assets_resourcesout_prefab_battle.bundle.manifest
+++ /dev/null
@@ -1,26 +0,0 @@
-ManifestFileVersion: 0
-CRC: 1791643228
-Hashes:
-  AssetFileHash:
-    serializedVersion: 2
-    Hash: 1a2ced06fadac4d1702a47d747dcd44b
-  TypeTreeHash:
-    serializedVersion: 2
-    Hash: ade0906da2404468b76c766d231ab3ab
-  IncrementalBuildHash:
-    serializedVersion: 2
-    Hash: 1a2ced06fadac4d1702a47d747dcd44b
-HashAppended: 0
-ClassTypes:
-- Class: 1
-  Script: {instanceID: 0}
-- Class: 4
-  Script: {instanceID: 0}
-- Class: 20
-  Script: {instanceID: 0}
-- Class: 81
-  Script: {instanceID: 0}
-SerializeReferenceClassIdentifiers: []
-Assets:
-- Assets/ResourcesOut/Prefab/Battle/BattleCamera.prefab
-Dependencies: []
diff --git a/Bundles/StandaloneWindows64/Prefab/OutputCache/prefab_assets_resourcesout_prefab_place.bundle b/Bundles/StandaloneWindows64/Prefab/OutputCache/prefab_assets_resourcesout_prefab_place.bundle
deleted file mode 100644
index 68fdfdc..0000000
--- a/Bundles/StandaloneWindows64/Prefab/OutputCache/prefab_assets_resourcesout_prefab_place.bundle
+++ /dev/null
Binary files differ
diff --git a/Bundles/StandaloneWindows64/Prefab/OutputCache/prefab_assets_resourcesout_prefab_place.bundle.manifest b/Bundles/StandaloneWindows64/Prefab/OutputCache/prefab_assets_resourcesout_prefab_place.bundle.manifest
deleted file mode 100644
index 068a47e..0000000
--- a/Bundles/StandaloneWindows64/Prefab/OutputCache/prefab_assets_resourcesout_prefab_place.bundle.manifest
+++ /dev/null
@@ -1,26 +0,0 @@
-ManifestFileVersion: 0
-CRC: 3240290592
-Hashes:
-  AssetFileHash:
-    serializedVersion: 2
-    Hash: 836ec96e90328652d3951b912a04f77d
-  TypeTreeHash:
-    serializedVersion: 2
-    Hash: ade0906da2404468b76c766d231ab3ab
-  IncrementalBuildHash:
-    serializedVersion: 2
-    Hash: 836ec96e90328652d3951b912a04f77d
-HashAppended: 0
-ClassTypes:
-- Class: 1
-  Script: {instanceID: 0}
-- Class: 4
-  Script: {instanceID: 0}
-- Class: 20
-  Script: {instanceID: 0}
-- Class: 81
-  Script: {instanceID: 0}
-SerializeReferenceClassIdentifiers: []
-Assets:
-- Assets/ResourcesOut/Prefab/Place/PlaceCamera.prefab
-Dependencies: []
diff --git a/Bundles/StandaloneWindows64/UI/1.0.0/BuildinCatalog.bytes b/Bundles/StandaloneWindows64/UI/1.0.0/BuildinCatalog.bytes
deleted file mode 100644
index 16b3244..0000000
--- a/Bundles/StandaloneWindows64/UI/1.0.0/BuildinCatalog.bytes
+++ /dev/null
Binary files differ
diff --git a/Bundles/StandaloneWindows64/UI/1.0.0/BuildinCatalog.json b/Bundles/StandaloneWindows64/UI/1.0.0/BuildinCatalog.json
deleted file mode 100644
index 183f563..0000000
--- a/Bundles/StandaloneWindows64/UI/1.0.0/BuildinCatalog.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-    "FileVersion": "1.0.0",
-    "PackageName": "UI",
-    "PackageVersion": "1.0.0",
-    "Wrappers": [
-        {
-            "BundleGUID": "d50470f323aa866d2c467d86397f06db",
-            "FileName": "d50470f323aa866d2c467d86397f06db.bundle"
-        }
-    ]
-}
\ No newline at end of file
diff --git a/Bundles/StandaloneWindows64/UI/1.0.0/OutputCache b/Bundles/StandaloneWindows64/UI/1.0.0/OutputCache
deleted file mode 100644
index 3143b88..0000000
--- a/Bundles/StandaloneWindows64/UI/1.0.0/OutputCache
+++ /dev/null
Binary files differ
diff --git a/Bundles/StandaloneWindows64/UI/1.0.0/OutputCache.manifest b/Bundles/StandaloneWindows64/UI/1.0.0/OutputCache.manifest
deleted file mode 100644
index 1798cf3..0000000
--- a/Bundles/StandaloneWindows64/UI/1.0.0/OutputCache.manifest
+++ /dev/null
@@ -1,7 +0,0 @@
-ManifestFileVersion: 0
-CRC: 3048049141
-AssetBundleManifest:
-  AssetBundleInfos:
-    Info_0:
-      Name: ui_assets_resourcesout_ui.bundle
-      Dependencies: {}
diff --git a/Bundles/StandaloneWindows64/UI/1.0.0/UI.version b/Bundles/StandaloneWindows64/UI/1.0.0/UI.version
deleted file mode 100644
index afaf360..0000000
--- a/Bundles/StandaloneWindows64/UI/1.0.0/UI.version
+++ /dev/null
@@ -1 +0,0 @@
-1.0.0
\ No newline at end of file
diff --git a/Bundles/StandaloneWindows64/UI/1.0.0/UI_1.0.0.bytes b/Bundles/StandaloneWindows64/UI/1.0.0/UI_1.0.0.bytes
deleted file mode 100644
index 78422a6..0000000
--- a/Bundles/StandaloneWindows64/UI/1.0.0/UI_1.0.0.bytes
+++ /dev/null
Binary files differ
diff --git a/Bundles/StandaloneWindows64/UI/1.0.0/UI_1.0.0.hash b/Bundles/StandaloneWindows64/UI/1.0.0/UI_1.0.0.hash
deleted file mode 100644
index fc3b2bd..0000000
--- a/Bundles/StandaloneWindows64/UI/1.0.0/UI_1.0.0.hash
+++ /dev/null
@@ -1 +0,0 @@
-df14a6da
\ No newline at end of file
diff --git a/Bundles/StandaloneWindows64/UI/1.0.0/UI_1.0.0.json b/Bundles/StandaloneWindows64/UI/1.0.0/UI_1.0.0.json
deleted file mode 100644
index 62e2073..0000000
--- a/Bundles/StandaloneWindows64/UI/1.0.0/UI_1.0.0.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
-    "FileVersion": "2.3.1",
-    "EnableAddressable": true,
-    "LocationToLower": false,
-    "IncludeAssetGUID": true,
-    "OutputNameStyle": 0,
-    "BuildBundleType": 2,
-    "BuildPipeline": "BuiltinBuildPipeline",
-    "PackageName": "UI",
-    "PackageVersion": "1.0.0",
-    "PackageNote": "2025/4/28 15:42:23",
-    "AssetList": [
-        {
-            "Address": "UI_LoadingWin",
-            "AssetPath": "Assets/ResourcesOut/UI/LoadingWin.prefab",
-            "AssetGUID": "7f196653eebf2d740a492ed3410f37d0",
-            "AssetTags": [],
-            "BundleID": 0,
-            "DependBundleIDs": []
-        },
-        {
-            "Address": "UI_LoginWin",
-            "AssetPath": "Assets/ResourcesOut/UI/LoginWin.prefab",
-            "AssetGUID": "3f33a2c720ddf43468895ea40a1c76f9",
-            "AssetTags": [],
-            "BundleID": 0,
-            "DependBundleIDs": []
-        },
-        {
-            "Address": "UI_MainWin",
-            "AssetPath": "Assets/ResourcesOut/UI/MainWin.prefab",
-            "AssetGUID": "6e9da5f968f53f9479a8fc15762f3e53",
-            "AssetTags": [],
-            "BundleID": 0,
-            "DependBundleIDs": []
-        }
-    ],
-    "BundleList": [
-        {
-            "BundleName": "ui_assets_resourcesout_ui.bundle",
-            "UnityCRC": 988109003,
-            "FileHash": "d50470f323aa866d2c467d86397f06db",
-            "FileCRC": "fe9999cc",
-            "FileSize": 18836,
-            "Encrypted": false,
-            "Tags": [],
-            "DependBundleIDs": []
-        }
-    ]
-}
\ No newline at end of file
diff --git a/Bundles/StandaloneWindows64/UI/1.0.0/UI_1.0.0.report b/Bundles/StandaloneWindows64/UI/1.0.0/UI_1.0.0.report
deleted file mode 100644
index 58df01c..0000000
--- a/Bundles/StandaloneWindows64/UI/1.0.0/UI_1.0.0.report
+++ /dev/null
@@ -1,100 +0,0 @@
-{
-    "Summary": {
-        "YooVersion": "2.3.8",
-        "UnityVersion": "2022.3.34f1c1",
-        "BuildDate": "2025/4/28 15:42:26",
-        "BuildSeconds": 2,
-        "BuildTarget": 19,
-        "BuildPipeline": "BuiltinBuildPipeline",
-        "BuildBundleType": 2,
-        "BuildPackageName": "UI",
-        "BuildPackageVersion": "1.0.0",
-        "BuildPackageNote": "2025/4/28 15:42:23",
-        "UniqueBundleName": true,
-        "EnableAddressable": true,
-        "LocationToLower": false,
-        "IncludeAssetGUID": true,
-        "AutoCollectShaders": true,
-        "IgnoreRuleName": "YooAsset.Editor.NormalIgnoreRule",
-        "ClearBuildCacheFiles": true,
-        "UseAssetDependencyDB": true,
-        "EnableSharePackRule": true,
-        "SingleReferencedPackAlone": true,
-        "EncryptionClassName": "null",
-        "FileNameStyle": 0,
-        "CompressOption": 2,
-        "DisableWriteTypeTree": false,
-        "IgnoreTypeTreeChanges": true,
-        "WriteLinkXML": true,
-        "CacheServerHost": "",
-        "CacheServerPort": 0,
-        "BuiltinShadersBundleName": "",
-        "MonoScriptsBundleName": "",
-        "AssetFileTotalCount": 3,
-        "MainAssetTotalCount": 3,
-        "AllBundleTotalCount": 1,
-        "AllBundleTotalSize": 18836,
-        "EncryptedBundleTotalCount": 0,
-        "EncryptedBundleTotalSize": 0
-    },
-    "AssetInfos": [
-        {
-            "Address": "UI_LoadingWin",
-            "AssetPath": "Assets/ResourcesOut/UI/LoadingWin.prefab",
-            "AssetGUID": "7f196653eebf2d740a492ed3410f37d0",
-            "AssetTags": [],
-            "MainBundleName": "ui_assets_resourcesout_ui.bundle",
-            "MainBundleSize": 18836,
-            "DependAssets": [],
-            "DependBundles": []
-        },
-        {
-            "Address": "UI_LoginWin",
-            "AssetPath": "Assets/ResourcesOut/UI/LoginWin.prefab",
-            "AssetGUID": "3f33a2c720ddf43468895ea40a1c76f9",
-            "AssetTags": [],
-            "MainBundleName": "ui_assets_resourcesout_ui.bundle",
-            "MainBundleSize": 18836,
-            "DependAssets": [],
-            "DependBundles": []
-        },
-        {
-            "Address": "UI_MainWin",
-            "AssetPath": "Assets/ResourcesOut/UI/MainWin.prefab",
-            "AssetGUID": "6e9da5f968f53f9479a8fc15762f3e53",
-            "AssetTags": [],
-            "MainBundleName": "ui_assets_resourcesout_ui.bundle",
-            "MainBundleSize": 18836,
-            "DependAssets": [],
-            "DependBundles": []
-        }
-    ],
-    "BundleInfos": [
-        {
-            "BundleName": "ui_assets_resourcesout_ui.bundle",
-            "FileName": "d50470f323aa866d2c467d86397f06db.bundle",
-            "FileHash": "d50470f323aa866d2c467d86397f06db",
-            "FileCRC": "fe9999cc",
-            "FileSize": 18836,
-            "Encrypted": false,
-            "Tags": [],
-            "DependBundles": [],
-            "ReferenceBundles": [],
-            "BundleContents": [
-                {
-                    "AssetPath": "Assets/ResourcesOut/UI/LoadingWin.prefab",
-                    "AssetGUID": "7f196653eebf2d740a492ed3410f37d0"
-                },
-                {
-                    "AssetPath": "Assets/ResourcesOut/UI/LoginWin.prefab",
-                    "AssetGUID": "3f33a2c720ddf43468895ea40a1c76f9"
-                },
-                {
-                    "AssetPath": "Assets/ResourcesOut/UI/MainWin.prefab",
-                    "AssetGUID": "6e9da5f968f53f9479a8fc15762f3e53"
-                }
-            ]
-        }
-    ],
-    "IndependAssets": []
-}
\ No newline at end of file
diff --git a/Bundles/StandaloneWindows64/UI/1.0.0/d50470f323aa866d2c467d86397f06db.bundle b/Bundles/StandaloneWindows64/UI/1.0.0/d50470f323aa866d2c467d86397f06db.bundle
deleted file mode 100644
index 33fffda..0000000
--- a/Bundles/StandaloneWindows64/UI/1.0.0/d50470f323aa866d2c467d86397f06db.bundle
+++ /dev/null
Binary files differ
diff --git a/Bundles/StandaloneWindows64/UI/OutputCache/OutputCache b/Bundles/StandaloneWindows64/UI/OutputCache/OutputCache
deleted file mode 100644
index 3143b88..0000000
--- a/Bundles/StandaloneWindows64/UI/OutputCache/OutputCache
+++ /dev/null
Binary files differ
diff --git a/Bundles/StandaloneWindows64/UI/OutputCache/OutputCache.manifest b/Bundles/StandaloneWindows64/UI/OutputCache/OutputCache.manifest
deleted file mode 100644
index 1798cf3..0000000
--- a/Bundles/StandaloneWindows64/UI/OutputCache/OutputCache.manifest
+++ /dev/null
@@ -1,7 +0,0 @@
-ManifestFileVersion: 0
-CRC: 3048049141
-AssetBundleManifest:
-  AssetBundleInfos:
-    Info_0:
-      Name: ui_assets_resourcesout_ui.bundle
-      Dependencies: {}
diff --git a/Bundles/StandaloneWindows64/UI/OutputCache/ui_assets_resourcesout_ui.bundle b/Bundles/StandaloneWindows64/UI/OutputCache/ui_assets_resourcesout_ui.bundle
deleted file mode 100644
index 33fffda..0000000
--- a/Bundles/StandaloneWindows64/UI/OutputCache/ui_assets_resourcesout_ui.bundle
+++ /dev/null
Binary files differ
diff --git a/Bundles/StandaloneWindows64/UI/OutputCache/ui_assets_resourcesout_ui.bundle.manifest b/Bundles/StandaloneWindows64/UI/OutputCache/ui_assets_resourcesout_ui.bundle.manifest
deleted file mode 100644
index ab0b5bf..0000000
--- a/Bundles/StandaloneWindows64/UI/OutputCache/ui_assets_resourcesout_ui.bundle.manifest
+++ /dev/null
@@ -1,94 +0,0 @@
-ManifestFileVersion: 0
-CRC: 988109003
-Hashes:
-  AssetFileHash:
-    serializedVersion: 2
-    Hash: fb53c1d18b74feb98f679910237fe72f
-  TypeTreeHash:
-    serializedVersion: 2
-    Hash: 7c7f97d5943f84b5488e5dd94fd2f11d
-  IncrementalBuildHash:
-    serializedVersion: 2
-    Hash: fb53c1d18b74feb98f679910237fe72f
-HashAppended: 0
-ClassTypes:
-- Class: 1
-  Script: {instanceID: 0}
-- Class: 21
-  Script: {instanceID: 0}
-- Class: 28
-  Script: {instanceID: 0}
-- Class: 48
-  Script: {instanceID: 0}
-- Class: 114
-  Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
-- Class: 114
-  Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
-- Class: 114
-  Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
-- Class: 114
-  Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3}
-- Class: 114
-  Script: {fileID: 11500000, guid: 2fafe2cfe61f6974895a912c3755e8f1, type: 3}
-- Class: 114
-  Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
-- Class: 114
-  Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
-- Class: 114
-  Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
-- Class: 114
-  Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
-- Class: 114
-  Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
-- Class: 114
-  Script: {fileID: 11500000, guid: e85e62037b34d9944a44a4c93764c656, type: 3}
-- Class: 114
-  Script: {fileID: 11500000, guid: 0b14b415a3ac64548a78d163d6cb7e33, type: 3}
-- Class: 114
-  Script: {fileID: 11500000, guid: 1d9e1ce1eab28d84188a1c2db2c1c472, type: 3}
-- Class: 115
-  Script: {instanceID: 0}
-- Class: 128
-  Script: {instanceID: 0}
-- Class: 213
-  Script: {instanceID: 0}
-- Class: 222
-  Script: {instanceID: 0}
-- Class: 223
-  Script: {instanceID: 0}
-- Class: 224
-  Script: {instanceID: 0}
-- Class: 225
-  Script: {instanceID: 0}
-SerializeReferenceClassIdentifiers:
-- AssemblyName: UnityEngine.CoreModule
-  ClassName: UnityEngine.Events.PersistentCallGroup
-- AssemblyName: UnityEngine.CoreModule
-  ClassName: UnityEngine.RectOffset
-- AssemblyName: UnityEngine.UI
-  ClassName: UnityEngine.UI.AnimationTriggers
-- AssemblyName: UnityEngine.UI
-  ClassName: UnityEngine.UI.Button/ButtonClickedEvent
-- AssemblyName: UnityEngine.UI
-  ClassName: UnityEngine.UI.ColorBlock
-- AssemblyName: UnityEngine.UI
-  ClassName: UnityEngine.UI.FontData
-- AssemblyName: UnityEngine.UI
-  ClassName: UnityEngine.UI.InputField/EndEditEvent
-- AssemblyName: UnityEngine.UI
-  ClassName: UnityEngine.UI.InputField/OnChangeEvent
-- AssemblyName: UnityEngine.UI
-  ClassName: UnityEngine.UI.InputField/SubmitEvent
-- AssemblyName: UnityEngine.UI
-  ClassName: UnityEngine.UI.MaskableGraphic/CullStateChangedEvent
-- AssemblyName: UnityEngine.UI
-  ClassName: UnityEngine.UI.Navigation
-- AssemblyName: UnityEngine.UI
-  ClassName: UnityEngine.UI.SpriteState
-- AssemblyName: UnityEngine.UI
-  ClassName: UnityEngine.UI.Toggle/ToggleEvent
-Assets:
-- Assets/ResourcesOut/UI/LoadingWin.prefab
-- Assets/ResourcesOut/UI/LoginWin.prefab
-- Assets/ResourcesOut/UI/MainWin.prefab
-Dependencies: []

--
Gitblit v1.8.0