From 6d216561f86e1a68c679e4737e8539e51500f916 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E4=BD=95=E5=86=A0=E5=B3=B0?= <hevinci@hotmail.com>
Date: Mon, 10 Feb 2025 20:00:48 +0800
Subject: [PATCH] fix #468

---
 .../DefaultBuildinFileSystem.cs               | 36 ++++++++++++-------
 1 file changed, 24 insertions(+), 12 deletions(-)

diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs
index c3bb6a8d..25ec5da3 100644
--- a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs
+++ b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs
@@ -113,12 +113,13 @@ namespace YooAsset
         }
         public virtual FSDownloadFileOperation DownloadFileAsync(PackageBundle bundle, DownloadParam param)
         {
+            // 注意:业务层的解压下载器会依赖内置文件系统的下载方法
             param.ImportFilePath = GetBuildinFileLoadPath(bundle);
             return _unpackFileSystem.DownloadFileAsync(bundle, param);
         }
         public virtual FSLoadBundleOperation LoadBundleFile(PackageBundle bundle)
         {
-            if (NeedUnpack(bundle))
+            if (IsUnpackBundleFile(bundle))
             {
                 return _unpackFileSystem.LoadBundleFile(bundle);
             }
@@ -216,11 +217,7 @@ namespace YooAsset
         }
         public virtual bool NeedUnpack(PackageBundle bundle)
         {
-            if (Belong(bundle) == false)
-                return false;
-
-#if UNITY_ANDROID
-            if (bundle.BundleType == (int)EBuildBundleType.RawBundle || bundle.Encrypted)
+            if (IsUnpackBundleFile(bundle))
             {
                 return _unpackFileSystem.Exists(bundle) == false;
             }
@@ -228,9 +225,6 @@ namespace YooAsset
             {
                 return false;
             }
-#else
-            return false;
-#endif
         }
         public virtual bool NeedImport(PackageBundle bundle)
         {
@@ -239,14 +233,14 @@ namespace YooAsset
 
         public virtual string GetBundleFilePath(PackageBundle bundle)
         {
-            if (NeedUnpack(bundle))
+            if (IsUnpackBundleFile(bundle))
                 return _unpackFileSystem.GetBundleFilePath(bundle);
 
             return GetBuildinFileLoadPath(bundle);
         }
         public virtual byte[] ReadBundleFileData(PackageBundle bundle)
         {
-            if (NeedUnpack(bundle))
+            if (IsUnpackBundleFile(bundle))
                 return _unpackFileSystem.ReadBundleFileData(bundle);
 
             if (Exists(bundle) == false)
@@ -277,7 +271,7 @@ namespace YooAsset
         }
         public virtual string ReadBundleFileText(PackageBundle bundle)
         {
-            if (NeedUnpack(bundle))
+            if (IsUnpackBundleFile(bundle))
                 return _unpackFileSystem.ReadBundleFileText(bundle);
 
             if (Exists(bundle) == false)
@@ -343,6 +337,24 @@ namespace YooAsset
             return YooAssetSettingsData.GetYooResourcesLoadPath(PackageName, fileName);
         }
 
+        /// <summary>
+        /// 是否属于解压资源包文件
+        /// </summary>
+        protected bool IsUnpackBundleFile(PackageBundle bundle)
+        {
+            if (Belong(bundle) == false)
+                return false;
+
+#if UNITY_ANDROID
+            if (bundle.BundleType == (int)EBuildBundleType.RawBundle || bundle.Encrypted)
+                return true;
+            else
+                return false;
+#else
+            return false;
+#endif
+        }
+
         /// <summary>
         /// 记录文件信息
         /// </summary>