From acf23010289dbfaea1881179db1bebc004e30893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E5=86=A0=E5=B3=B0?= Date: Tue, 10 Dec 2024 16:48:08 +0800 Subject: [PATCH] refactor : wait for sync complete --- .../Operation/DCFSDownloadFileOperation.cs | 12 ++++++------ .../Operation/DCFSLoadBundleOperation.cs | 12 ++++++------ .../Runtime/OperationSystem/AsyncOperationBase.cs | 2 +- .../Loader/LoadBundleFileOperation.cs | 6 +++--- .../Loader/LoadDependFileOperation.cs | 13 ++++++++----- .../ResourceManager/Provider/ProviderOperation.cs | 1 + 6 files changed, 25 insertions(+), 21 deletions(-) diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSDownloadFileOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSDownloadFileOperation.cs index 1dde7aa1..1ba0226c 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSDownloadFileOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSDownloadFileOperation.cs @@ -94,6 +94,9 @@ namespace YooAsset // 等待验证完成 if (_steps == ESteps.CheckVerifyTempFile) { + if (IsWaitForAsyncComplete) + _verifyOperation.WaitForAsyncComplete(); + if (_verifyOperation.IsDone == false) return; @@ -154,9 +157,6 @@ namespace YooAsset while (true) { - if (_verifyOperation != null) - _verifyOperation.WaitForAsyncComplete(); - // 注意:如果是导入或解压本地文件,执行等待完毕 if (isReuqestLocalFile) { @@ -305,6 +305,9 @@ namespace YooAsset // 等待验证完成 if (_steps == ESteps.CheckVerifyTempFile) { + if (IsWaitForAsyncComplete) + _verifyOperation.WaitForAsyncComplete(); + if (_verifyOperation.IsDone == false) return; @@ -364,9 +367,6 @@ namespace YooAsset while (true) { - if (_verifyOperation != null) - _verifyOperation.WaitForAsyncComplete(); - // 注意:如果是导入或解压本地文件,执行等待完毕 if (isReuqestLocalFile) { diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSLoadBundleOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSLoadBundleOperation.cs index 7a863e07..0d8d91ee 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSLoadBundleOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSLoadBundleOperation.cs @@ -58,6 +58,9 @@ namespace YooAsset _downloadFileOp = _fileSystem.DownloadFileAsync(_bundle, downloadParam); } + if (IsWaitForAsyncComplete) + _downloadFileOp.WaitForAsyncComplete(); + DownloadProgress = _downloadFileOp.DownloadProgress; DownloadedBytes = _downloadFileOp.DownloadedBytes; if (_downloadFileOp.IsDone == false) @@ -198,9 +201,6 @@ namespace YooAsset { while (true) { - if (_downloadFileOp != null) - _downloadFileOp.WaitForAsyncComplete(); - if (ExecuteWhileDone()) { if (_downloadFileOp != null && _downloadFileOp.Status == EOperationStatus.Failed) @@ -274,6 +274,9 @@ namespace YooAsset _downloadFileOp = _fileSystem.DownloadFileAsync(_bundle, downloadParam); } + if (IsWaitForAsyncComplete) + _downloadFileOp.WaitForAsyncComplete(); + DownloadProgress = _downloadFileOp.DownloadProgress; DownloadedBytes = _downloadFileOp.DownloadedBytes; if (_downloadFileOp.IsDone == false) @@ -313,9 +316,6 @@ namespace YooAsset { while (true) { - if (_downloadFileOp != null) - _downloadFileOp.WaitForAsyncComplete(); - if (ExecuteWhileDone()) { if (_downloadFileOp != null && _downloadFileOp.Status == EOperationStatus.Failed) diff --git a/Assets/YooAsset/Runtime/OperationSystem/AsyncOperationBase.cs b/Assets/YooAsset/Runtime/OperationSystem/AsyncOperationBase.cs index 83a54b97..8bad5bac 100644 --- a/Assets/YooAsset/Runtime/OperationSystem/AsyncOperationBase.cs +++ b/Assets/YooAsset/Runtime/OperationSystem/AsyncOperationBase.cs @@ -147,7 +147,7 @@ namespace YooAsset // 当执行次数用完时 _whileFrame--; - if (_whileFrame == 0) + if (_whileFrame <= 0) { Status = EOperationStatus.Failed; Error = $"Operation {this.GetType().Name} failed to wait for async complete !"; diff --git a/Assets/YooAsset/Runtime/ResourceManager/Loader/LoadBundleFileOperation.cs b/Assets/YooAsset/Runtime/ResourceManager/Loader/LoadBundleFileOperation.cs index 992a0ad0..520643f4 100644 --- a/Assets/YooAsset/Runtime/ResourceManager/Loader/LoadBundleFileOperation.cs +++ b/Assets/YooAsset/Runtime/ResourceManager/Loader/LoadBundleFileOperation.cs @@ -69,6 +69,9 @@ namespace YooAsset if (_loadBundleOp == null) _loadBundleOp = BundleFileInfo.LoadBundleFile(); + if (IsWaitForAsyncComplete) + _loadBundleOp.WaitForAsyncComplete(); + DownloadProgress = _loadBundleOp.DownloadProgress; DownloadedBytes = _loadBundleOp.DownloadedBytes; if (_loadBundleOp.IsDone == false) @@ -101,9 +104,6 @@ namespace YooAsset { while (true) { - if (_loadBundleOp != null) - _loadBundleOp.WaitForAsyncComplete(); - if (ExecuteWhileDone()) { _steps = ESteps.Done; diff --git a/Assets/YooAsset/Runtime/ResourceManager/Loader/LoadDependFileOperation.cs b/Assets/YooAsset/Runtime/ResourceManager/Loader/LoadDependFileOperation.cs index d1c53a4b..df718c63 100644 --- a/Assets/YooAsset/Runtime/ResourceManager/Loader/LoadDependFileOperation.cs +++ b/Assets/YooAsset/Runtime/ResourceManager/Loader/LoadDependFileOperation.cs @@ -36,6 +36,14 @@ namespace YooAsset if (_steps == ESteps.CheckDepend) { + if (IsWaitForAsyncComplete) + { + foreach (var loader in Depends) + { + loader.WaitForAsyncComplete(); + } + } + foreach (var loader in Depends) { if (loader.IsDone == false) @@ -73,11 +81,6 @@ namespace YooAsset { while (true) { - foreach (var loader in Depends) - { - loader.WaitForAsyncComplete(); - } - if (ExecuteWhileDone()) { _steps = ESteps.Done; diff --git a/Assets/YooAsset/Runtime/ResourceManager/Provider/ProviderOperation.cs b/Assets/YooAsset/Runtime/ResourceManager/Provider/ProviderOperation.cs index 501aeed2..b6b3107a 100644 --- a/Assets/YooAsset/Runtime/ResourceManager/Provider/ProviderOperation.cs +++ b/Assets/YooAsset/Runtime/ResourceManager/Provider/ProviderOperation.cs @@ -96,6 +96,7 @@ namespace YooAsset { if (LoadDependBundleFileOp != null) LoadDependBundleFileOp.WaitForAsyncComplete(); + if (LoadBundleFileOp != null) LoadBundleFileOp.WaitForAsyncComplete();