From f4b7ae21ea3e41803b38f987f8a82b327d268c52 Mon Sep 17 00:00:00 2001 From: jiangyu Date: Mon, 27 Feb 2023 11:53:17 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=9A=E8=BF=87=E8=A7=A3=E5=AF=86=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=88=A4=E6=96=AD=E6=98=AF=E5=90=A6=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E8=B5=B0Unpack=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Loader/AssetBundleFileLoader.cs | 23 +++++++++++++------ .../AssetSystem/Loader/RawBundleFileLoader.cs | 13 +++++++++-- .../Runtime/Services/IDecryptionServices.cs | 6 +++++ 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/Assets/YooAsset/Runtime/AssetSystem/Loader/AssetBundleFileLoader.cs b/Assets/YooAsset/Runtime/AssetSystem/Loader/AssetBundleFileLoader.cs index 6fba180..841c68d 100644 --- a/Assets/YooAsset/Runtime/AssetSystem/Loader/AssetBundleFileLoader.cs +++ b/Assets/YooAsset/Runtime/AssetSystem/Loader/AssetBundleFileLoader.cs @@ -51,17 +51,26 @@ namespace YooAsset else if (MainBundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromStreaming) { #if UNITY_ANDROID - EBundleLoadMethod loadMethod = (EBundleLoadMethod)MainBundleInfo.Bundle.LoadMethod; - if (loadMethod == EBundleLoadMethod.LoadFromMemory || loadMethod == EBundleLoadMethod.LoadFromStream) - { - _steps = ESteps.Unpack; - FileLoadPath = MainBundleInfo.Bundle.CachedDataFilePath; - } - else + /// 判断是否需要解压文件 + if( Impl.DecryptionServices != null && Impl.DecryptionServices.UnpackBundleFile == false) { _steps = ESteps.LoadFile; FileLoadPath = MainBundleInfo.Bundle.StreamingFilePath; } + else + { + EBundleLoadMethod loadMethod = (EBundleLoadMethod)MainBundleInfo.Bundle.LoadMethod; + if (loadMethod == EBundleLoadMethod.LoadFromMemory || loadMethod == EBundleLoadMethod.LoadFromStream) + { + _steps = ESteps.Unpack; + FileLoadPath = MainBundleInfo.Bundle.CachedDataFilePath; + } + else + { + _steps = ESteps.LoadFile; + FileLoadPath = MainBundleInfo.Bundle.StreamingFilePath; + } + } #else _steps = ESteps.LoadFile; FileLoadPath = MainBundleInfo.Bundle.StreamingFilePath; diff --git a/Assets/YooAsset/Runtime/AssetSystem/Loader/RawBundleFileLoader.cs b/Assets/YooAsset/Runtime/AssetSystem/Loader/RawBundleFileLoader.cs index 103b6eb..aa94a38 100644 --- a/Assets/YooAsset/Runtime/AssetSystem/Loader/RawBundleFileLoader.cs +++ b/Assets/YooAsset/Runtime/AssetSystem/Loader/RawBundleFileLoader.cs @@ -43,8 +43,17 @@ namespace YooAsset else if (MainBundleInfo.LoadMode == BundleInfo.ELoadMode.LoadFromStreaming) { #if UNITY_ANDROID || UNITY_WEBGL - _steps = ESteps.Unpack; - FileLoadPath = MainBundleInfo.Bundle.CachedDataFilePath; + /// 判断是否需要解压文件 + if (Impl.DecryptionServices != null && Impl.DecryptionServices.UnpackBundleFile == false) + { + _steps = ESteps.CheckFile; + FileLoadPath = MainBundleInfo.Bundle.StreamingFilePath; + } + else + { + _steps = ESteps.Unpack; + FileLoadPath = MainBundleInfo.Bundle.CachedDataFilePath; + } #else _steps = ESteps.CheckFile; FileLoadPath = MainBundleInfo.Bundle.StreamingFilePath; diff --git a/Assets/YooAsset/Runtime/Services/IDecryptionServices.cs b/Assets/YooAsset/Runtime/Services/IDecryptionServices.cs index 11ea5b0..570c6c5 100644 --- a/Assets/YooAsset/Runtime/Services/IDecryptionServices.cs +++ b/Assets/YooAsset/Runtime/Services/IDecryptionServices.cs @@ -19,6 +19,12 @@ namespace YooAsset /// public interface IDecryptionServices { + + /// + /// 是否需要解压文件 + /// + bool UnpackBundleFile { get; } + /// /// 文件偏移解密方法 ///