From 0c5d95969a20c5b77adf54e568528b4e627eb472 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期六, 23 五月 2026 18:09:57 +0800
Subject: [PATCH] 打包资源bug跟export资源问题修复

---
 Assets/Editor/Tool/ClientPackage.cs |   84 +++++++++++++++++++++--------------------
 1 files changed, 43 insertions(+), 41 deletions(-)

diff --git a/Assets/Editor/Tool/ClientPackage.cs b/Assets/Editor/Tool/ClientPackage.cs
index c22b442..494ca79 100644
--- a/Assets/Editor/Tool/ClientPackage.cs
+++ b/Assets/Editor/Tool/ClientPackage.cs
@@ -8,6 +8,7 @@
 using System.Text;
 using Cysharp.Threading.Tasks;
 using YooAsset.Editor;
+using UnityEngine.AssetBundles;
 
 //using Beebyte.Obfuscator;
 
@@ -142,15 +143,22 @@
         }
         Debug.Log("[ClientPackage] YooAsset 璧勬簮鎵撳寘瀹屾垚銆�");
 
+        // 鎵撳寘鎴愬姛鍚庯紝灏嗗畬鏁� StreamingAssets/yoo 鎷疯礉鍒� Output Path锛堣鍓墠鎵ц锛岀‘淇濇嬁鍒板叏閲忚祫婧愶級
+        if (!string.IsNullOrEmpty(_assetBundlePath))
+        {
+            YooAssetBuildTool.CopyStreamingAssetsToOutputPath(_assetBundlePath);
+        }
+
         // YooAsset StreamingAssets 鏍圭洰褰�
         string yooRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
 
-        // ---- NullAsset锛堝皬鍖咃級锛氬彧淇濈暀 Launch 蹇呴渶 Package锛屽叾瀹冭祫婧愪粠 CDN 鎸夐渶涓嬭浇 ----
+        // ---- NullAsset锛堝皬鍖咃級锛氫笉闅忓寘鎼哄甫 StreamingAssets 璧勬簮锛屽叏閮ㄤ粠 CDN 鎸夐渶涓嬭浇 ----
         if (smallPackages.Count > 0)
         {
-            RemovePackagesExcept(yooRoot, LaunchRequiredYooPackages);
+            YooAssetBuildTool.ClearStreamingAssetsYooDirectory();
+            Debug.Log("[ClientPackage] NullAsset: 宸叉竻绌� StreamingAssets/yoo");
 
-            // 鍐欏叆闅忓寘 Package 鍒楄〃锛岃繍琛屾椂 Builtin/Dll 鍒涘缓 BuildinFileSystem锛屽叾瀹冨寘璧� CacheFileSystem
+            // 鍐欏叆闅忓寘 Package 鍒楄〃锛孨ullAsset 涓虹┖鍒楄〃
             YooAssetBuildTool.WriteBuildinPackageList();
 
             for (int i = 0; i < smallPackages.Count; i++)
@@ -219,6 +227,7 @@
 
     public static void BuildApk(string _sdkPath, string _output, string _publisher, int _buildIndex, bool _development, string _streamingAssetsOutputPath = null)
     {
+        YooAssetBuildTool.DeleteStartupConfigsFromStreamingAssets();
         PreBuild(_publisher, _buildIndex);
         var auditTimeFile = StringUtility.Concat(Application.dataPath, Path.DirectorySeparatorChar.ToString(), "Resources/Config/AuditTime.txt");
         if (File.Exists(auditTimeFile))
@@ -359,12 +368,6 @@
         AssetDatabase.SaveAssets();
         AssetDatabase.Refresh();
 
-        if (_streamingAssetsOutputPath != null && !YooAssetBuildTool.CopyStreamingAssetsToOutputPath(_streamingAssetsOutputPath))
-        {
-            Debug.LogError("[ClientPackage] 鎷疯礉 StreamingAssets 鍒拌祫婧愯緭鍑虹洰褰曞け璐ワ紝涓 APK 鏋勫缓銆俆ARGET=" + _streamingAssetsOutputPath);
-            return;
-        }
-
         // 纭繚涓嶄互 Gradle 宸ョ▼妯″紡杈撳嚭锛圚ybridCLR StripAOT 姝ラ浼氫复鏃剁疆涓� true锛岃嫢鏈繕鍘熷垯浼氳緭鍑烘枃浠跺す鑰岄潪 APK锛�
         EditorUserBuildSettings.exportAsGoogleAndroidProject = false;
 
@@ -411,46 +414,42 @@
         string copySdkFile;
         copySdkFile = StringUtility.Concat(SDK_PLUGIN_PROJECT, "/Channel/Android/", versionConfig.sdkFileName, "/AndroidManifest.xml");
         File.Copy(copySdkFile, MANIFEST_PATH);
-        PreBuild(_publisher, _buildIndex);
 
 
         PlayerSettings.Android.bundleVersionCode = VersionConfig.GetVersionNumber(versionConfig.version);
         PlayerSettings.enableInternalProfiler = _development;
 
-        //瀹屾暣鍙朣treamingAssets 璧勬簮
-        
-        // // 鍏堟竻鐞哠treamingAssets锛屽啀鏍规嵁assetAccess閰嶇疆鎷疯礉璧勬簮鍒癝treamingAssets
-        // var streamingPath = ResourcesPath.Instance.StreamingAssetPath;
-        // if (Directory.Exists(streamingPath))
-        //     Directory.Delete(streamingPath, true);
-
-        // if (!string.IsNullOrEmpty(_assetBundlePath) && Directory.Exists(_assetBundlePath))
-        // {
-        //     switch (versionConfig.assetAccess)
-        //     {
-        //         case InstalledAsset.NullAsset:
-        //             CopyNullAssetResources(_assetBundlePath, streamingPath);
-        //             break;
-        //         case InstalledAsset.HalfAsset:
-        //             CopyHalfAssetResources(_assetBundlePath, streamingPath);
-        //             break;
-        //         case InstalledAsset.FullAsset:
-        //         case InstalledAsset.IngoreDownLoad:
-        //             CopyFullAssetResources(_assetBundlePath, streamingPath);
-        //             break;
-        //     }
-        //     Debug.LogFormat("璧勬簮鎷疯礉瀹屾垚({0})锛屼粠 {1} 鍒� {2}", versionConfig.assetAccess, _assetBundlePath, streamingPath);
-        // }
-        // else
-        // {
-        //     Debug.LogWarningFormat("AssetBundle璺緞涓虹┖鎴栦笉瀛樺湪: {0}锛屽鍑哄伐绋嬪皢涓嶅寘鍚父鎴忚祫婧�", _assetBundlePath);
-        // }
-
-        if (_assetBundlePath != null && !YooAssetBuildTool.CopyStreamingAssetsToOutputPath(_assetBundlePath))
+        if (!YooAssetBuildTool.BuildAllPackagesCore(incremental: false, _assetBundlePath))
         {
-            Debug.LogError("[ClientPackage] 鎷疯礉 StreamingAssets 鍒拌祫婧愯緭鍑虹洰褰曞け璐ワ紝涓 Android 宸ョ▼瀵煎嚭銆俆ARGET=" + _assetBundlePath);
+            Debug.LogError("[ClientPackage] YooAsset 璧勬簮鎵撳寘澶辫触锛屼腑姝� Android 宸ョ▼瀵煎嚭銆�");
             return;
         }
+
+        string yooRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
+        switch (versionConfig.assetAccess)
+        {
+            case InstalledAsset.NullAsset:
+                YooAssetBuildTool.ClearStreamingAssetsYooDirectory();
+                Debug.Log("[ClientPackage] NullAsset Export: 宸叉竻绌� StreamingAssets/yoo");
+                break;
+            case InstalledAsset.HalfAsset:
+                var removePackages = new List<string> { "Battle", "Audio", "Video", "UIEffect" };
+                if (!includeUI) removePackages.Add("UI");
+                foreach (var pkgName in removePackages)
+                {
+                    string pkgDir = Path.Combine(yooRoot, pkgName);
+                    if (Directory.Exists(pkgDir))
+                    {
+                        Directory.Delete(pkgDir, true);
+                        Debug.Log($"[ClientPackage] HalfAsset Export: 宸插墧闄� Package '{pkgName}'");
+                    }
+                }
+                break;
+        }
+
+        YooAssetBuildTool.WriteBuildinPackageList();
+        YooAssetBuildTool.DeleteStartupConfigsFromStreamingAssets();
+        PreBuild(_publisher, _buildIndex);
 
         // 鍏抽敭璁剧疆锛氬鍑轰负Gradle宸ョ▼鑰岄潪鐩存帴鎵揂PK
         EditorUserBuildSettings.exportAsGoogleAndroidProject = true;
@@ -475,6 +474,9 @@
 
         Debug.LogFormat("瀵煎嚭Android宸ョ▼瀹屾垚锛佽緭鍑鸿矾寰�: {0}", outputDir);
 
+        // 鎭㈠瀹屾暣 StreamingAssets 渚涘悗缁墦鍖呬娇鐢�
+        RestoreYooStreamingAssets();
+
         // 瀵煎嚭瀹屾垚鍚庢仮澶嶈缃�
         EditorUserBuildSettings.exportAsGoogleAndroidProject = false;
         EditorUserBuildSettings.development = false;

--
Gitblit v1.8.0