From 20c07af50453707d331b2f392acd20f3337fa64d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=BD=95=E5=86=A0=E5=B3=B0?= <hevinci@hotmail.com>
Date: Thu, 6 Feb 2025 16:43:55 +0800
Subject: [PATCH] update YooAssetSettings

---
 .../AssetBundleBuilderHelper.cs               |  2 +-
 .../DefaultBuildinFileSystem.cs               | 18 ++++-
 .../DefaultBuildinFileSystemBuild.cs          |  2 +-
 .../DefaultCacheFileSystem.cs                 | 11 +--
 .../DefaultEditorFileSystem.cs                |  6 +-
 .../DefaultWebServerFileSystem.cs             |  2 +-
 .../Operation/DWSFSInitializeOperation.cs     |  3 +-
 .../FileSystem/FileSystemParametersDefine.cs  |  1 +
 .../Runtime/Settings/YooAssetSettingsData.cs  | 69 +++++++------------
 9 files changed, 51 insertions(+), 63 deletions(-)

diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderHelper.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderHelper.cs
index 020c2162..eb11b8f7 100644
--- a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderHelper.cs
+++ b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderHelper.cs
@@ -22,7 +22,7 @@ namespace YooAsset.Editor
         /// </summary>
         public static string GetStreamingAssetsRoot()
         {
-            return YooAssetSettingsData.GetYooEditorBuildinRoot();
+            return YooAssetSettingsData.GetYooDefaultBuildinRoot();
         }
     }
 }
\ No newline at end of file
diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs
index ae545f4d..b3326a5b 100644
--- a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs
+++ b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs
@@ -68,6 +68,17 @@ namespace YooAsset
         /// </summary>
         public bool DisableCatalogFile { private set; get; } = false;
 
+        /// <summary>
+        /// 自定义参数:拷贝内置清单
+        /// </summary>
+        public bool CopyBuildinPackageManifest { private set; get; } = false;
+
+        /// <summary>
+        /// 自定义参数:拷贝内置清单的目标目录
+        /// 注意:该参数为空的时候,会获取默认的沙盒目录!
+        /// </summary>
+        public string CopyBuildinPackageManifestDestPath { private set; get; }
+
         /// <summary>
         ///  自定义参数:解密方法类
         /// </summary>
@@ -147,6 +158,11 @@ namespace YooAsset
             {
                 DisableCatalogFile = (bool)value;
             }
+            else if (name == FileSystemParametersDefine.COPY_BUILDIN_PACKAGE_MANIFEST)
+            {
+                CopyBuildinPackageManifest = true;
+                CopyBuildinPackageManifestDestPath = (string)value;
+            }
             else if (name == FileSystemParametersDefine.DECRYPTION_SERVICES)
             {
                 DecryptionServices = (IDecryptionServices)value;
@@ -291,7 +307,7 @@ namespace YooAsset
         #region 内部方法
         protected string GetDefaultBuildinPackageRoot(string packageName)
         {
-            string rootDirectory = YooAssetSettingsData.GetYooMobileBuildinRoot();
+            string rootDirectory = YooAssetSettingsData.GetYooDefaultBuildinRoot();
             return PathUtility.Combine(rootDirectory, packageName);
         }
         public string GetBuildinFileLoadPath(PackageBundle bundle)
diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystemBuild.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystemBuild.cs
index eb1d6a9b..0568c157 100644
--- a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystemBuild.cs
+++ b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystemBuild.cs
@@ -22,7 +22,7 @@ namespace YooAsset
             if (saveDirectory.Exists)
                 saveDirectory.Delete(true);
 
-            string rootPath = YooAssetSettingsData.GetYooEditorBuildinRoot();
+            string rootPath = YooAssetSettingsData.GetYooDefaultBuildinRoot();
             DirectoryInfo rootDirectory = new DirectoryInfo(rootPath);
             if (rootDirectory.Exists == false)
             {
diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs
index 8374c5d3..bff667ea 100644
--- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs
+++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs
@@ -473,16 +473,7 @@ namespace YooAsset
         #region 内部方法
         public string GetDefaultCachePackageRoot(string packageName)
         {
-            string rootDirectory;
-
-#if UNITY_EDITOR
-            rootDirectory = YooAssetSettingsData.GetYooEditorCacheRoot();
-#elif UNITY_STANDALONE
-            rootDirectory = YooAssetSettingsData.GetYooStandaloneCacheRoot();
-#else
-            rootDirectory = YooAssetSettingsData.GetYooMobileCacheRoot();
-#endif
-
+            string rootDirectory = YooAssetSettingsData.GetYooDefaultCacheRoot();
             return PathUtility.Combine(rootDirectory, packageName);
         }
         public string GetCacheBundleFileLoadPath(PackageBundle bundle)
diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/DefaultEditorFileSystem.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/DefaultEditorFileSystem.cs
index 6ea9ab5e..0736905e 100644
--- a/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/DefaultEditorFileSystem.cs
+++ b/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/DefaultEditorFileSystem.cs
@@ -174,17 +174,17 @@ namespace YooAsset
         public string GetEditorPackageVersionFilePath()
         {
             string fileName = YooAssetSettingsData.GetPackageVersionFileName(PackageName);
-            return PathUtility.Combine(FileRoot, fileName);
+            return PathUtility.Combine(_packageRoot, fileName);
         }
         public string GetEditorPackageHashFilePath(string packageVersion)
         {
             string fileName = YooAssetSettingsData.GetPackageHashFileName(PackageName, packageVersion);
-            return PathUtility.Combine(FileRoot, fileName);
+            return PathUtility.Combine(_packageRoot, fileName);
         }
         public string GetEditorPackageManifestFilePath(string packageVersion)
         {
             string fileName = YooAssetSettingsData.GetManifestBinaryFileName(PackageName, packageVersion);
-            return PathUtility.Combine(FileRoot, fileName);
+            return PathUtility.Combine(_packageRoot, fileName);
         }
         public int GetAsyncSimulateFrame()
         {
diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/DefaultWebServerFileSystem.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/DefaultWebServerFileSystem.cs
index fc666e5f..08fd015e 100644
--- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/DefaultWebServerFileSystem.cs
+++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/DefaultWebServerFileSystem.cs
@@ -168,7 +168,7 @@ namespace YooAsset
         #region 内部方法
         protected string GetDefaultWebPackageRoot(string packageName)
         {
-            string rootDirectory = YooAssetSettingsData.GetYooWebBuildinRoot();
+            string rootDirectory = YooAssetSettingsData.GetYooDefaultBuildinRoot();
             return PathUtility.Combine(rootDirectory, packageName);
         }
         public string GetWebFileLoadPath(PackageBundle bundle)
diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSInitializeOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSInitializeOperation.cs
index 1813211a..8b4c8f6a 100644
--- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSInitializeOperation.cs
+++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSInitializeOperation.cs
@@ -37,8 +37,7 @@ namespace YooAsset
 #if UNITY_EDITOR
                     // 兼容性初始化
                     // 说明:内置文件系统在编辑器下运行时需要动态生成
-                    string buildinRoot = YooAssetSettingsData.GetYooEditorBuildinRoot();
-                    string packageRoot = PathUtility.Combine(buildinRoot, _fileSystem.PackageName);
+                    string packageRoot = _fileSystem.FileRoot;
                     bool result = DefaultBuildinFileSystemBuild.CreateBuildinCatalogFile(_fileSystem.PackageName, packageRoot);
                     if (result == false)
                     {
diff --git a/Assets/YooAsset/Runtime/FileSystem/FileSystemParametersDefine.cs b/Assets/YooAsset/Runtime/FileSystem/FileSystemParametersDefine.cs
index 5f864a2c..86bef3d9 100644
--- a/Assets/YooAsset/Runtime/FileSystem/FileSystemParametersDefine.cs
+++ b/Assets/YooAsset/Runtime/FileSystem/FileSystemParametersDefine.cs
@@ -15,5 +15,6 @@ namespace YooAsset
         public const string RESUME_DOWNLOAD_RESPONSE_CODES = "RESUME_DOWNLOAD_RESPONSE_CODES";
         public const string ASYNC_SIMULATE_MIN_FRAME = "ASYNC_SIMULATE_MIN_FRAME";
         public const string ASYNC_SIMULATE_MAX_FRAME = "ASYNC_SIMULATE_MAX_FRAME";
+        public const string COPY_BUILDIN_PACKAGE_MANIFEST = "COPY_BUILDIN_PACKAGE_MANIFEST";
     }
 }
\ No newline at end of file
diff --git a/Assets/YooAsset/Runtime/Settings/YooAssetSettingsData.cs b/Assets/YooAsset/Runtime/Settings/YooAssetSettingsData.cs
index d62a541a..6e7e0bd3 100644
--- a/Assets/YooAsset/Runtime/Settings/YooAssetSettingsData.cs
+++ b/Assets/YooAsset/Runtime/Settings/YooAssetSettingsData.cs
@@ -111,50 +111,6 @@ namespace YooAsset
                 return $"Assets/Resources/{Setting.DefaultYooFolderName}";
         }
 
-        /// <summary>
-        /// 获取YOO的编辑器下内置文件根目录
-        /// </summary>
-        public static string GetYooEditorBuildinRoot()
-        {
-            if (string.IsNullOrEmpty(Setting.DefaultYooFolderName))
-                return PathUtility.Combine(Application.dataPath, "StreamingAssets");
-            else
-                return PathUtility.Combine(Application.dataPath, "StreamingAssets", Setting.DefaultYooFolderName);
-        }
-
-        /// <summary>
-        /// 获取YOO的PC端内置文件根目录
-        /// </summary>
-        public static string GetYooStandaloneBuildinRoot()
-        {
-            if (string.IsNullOrEmpty(Setting.DefaultYooFolderName))
-                return Application.streamingAssetsPath;
-            else
-                return PathUtility.Combine(Application.streamingAssetsPath, Setting.DefaultYooFolderName);
-        }
-
-        /// <summary>
-        /// 获取YOO的移动端内置文件根目录
-        /// </summary>
-        public static string GetYooMobileBuildinRoot()
-        {
-            if (string.IsNullOrEmpty(Setting.DefaultYooFolderName))
-                return Application.streamingAssetsPath;
-            else
-                return PathUtility.Combine(Application.streamingAssetsPath, Setting.DefaultYooFolderName);
-        }
-
-        /// <summary>
-        /// 获取YOO的Web端内置文件根目录
-        /// </summary>
-        public static string GetYooWebBuildinRoot()
-        {
-            if (string.IsNullOrEmpty(Setting.DefaultYooFolderName))
-                return Application.streamingAssetsPath;
-            else
-                return PathUtility.Combine(Application.streamingAssetsPath, Setting.DefaultYooFolderName);
-        }
-
         /// <summary>
         /// 获取YOO的编辑器下缓存文件根目录
         /// </summary>
@@ -196,6 +152,31 @@ namespace YooAsset
             else
                 return PathUtility.Combine(Application.persistentDataPath, Setting.DefaultYooFolderName);
         }
+
+        /// <summary>
+        /// 获取YOO默认的缓存文件根目录
+        /// </summary>
+        public static string GetYooDefaultCacheRoot()
+        {
+#if UNITY_EDITOR
+            return GetYooEditorCacheRoot();
+#elif UNITY_STANDALONE
+            return GetYooStandaloneCacheRoot();
+#else
+            return GetYooMobileCacheRoot();
+#endif
+        }
+
+        /// <summary>
+        /// 获取YOO默认的内置文件根目录
+        /// </summary>
+        public static string GetYooDefaultBuildinRoot()
+        {
+            if (string.IsNullOrEmpty(Setting.DefaultYooFolderName))
+                return Application.streamingAssetsPath;
+            else
+                return PathUtility.Combine(Application.streamingAssetsPath, Setting.DefaultYooFolderName);
+        }
         #endregion
     }
 }
\ No newline at end of file