From 29d456c06514fedbac7c9b46b4e05bb2e0828660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E5=86=A0=E5=B3=B0?= Date: Tue, 1 Apr 2025 10:22:01 +0800 Subject: [PATCH] fix #523 --- .../Operation/UnloadUnusedAssetsOperation.cs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/Assets/YooAsset/Runtime/ResourceManager/Operation/UnloadUnusedAssetsOperation.cs b/Assets/YooAsset/Runtime/ResourceManager/Operation/UnloadUnusedAssetsOperation.cs index 068905ea..ca4a13d9 100644 --- a/Assets/YooAsset/Runtime/ResourceManager/Operation/UnloadUnusedAssetsOperation.cs +++ b/Assets/YooAsset/Runtime/ResourceManager/Operation/UnloadUnusedAssetsOperation.cs @@ -15,6 +15,7 @@ namespace YooAsset private readonly ResourceManager _resManager; private readonly int _loopCount; + private int _loopCounter = 0; private ESteps _steps = ESteps.None; internal UnloadUnusedAssetsOperation(ResourceManager resourceManager, int loopCount) @@ -25,6 +26,7 @@ namespace YooAsset internal override void InternalStart() { _steps = ESteps.UnloadUnused; + _loopCounter = _loopCount; } internal override void InternalUpdate() { @@ -33,13 +35,23 @@ namespace YooAsset if (_steps == ESteps.UnloadUnused) { - for (int i = 0; i < _loopCount; i++) + while (_loopCounter > 0) { + _loopCounter--; LoopUnloadUnused(); + + if (IsWaitForAsyncComplete == false) + { + if (OperationSystem.IsBusy) + break; + } } - _steps = ESteps.Done; - Status = EOperationStatus.Succeed; + if (_loopCounter <= 0) + { + _steps = ESteps.Done; + Status = EOperationStatus.Succeed; + } } } internal override void InternalWaitForAsyncComplete()