diff --git a/Assets/YooAsset/Runtime/ResourceManager/Operation/UnloadAllAssetsOperation.cs b/Assets/YooAsset/Runtime/ResourceManager/Operation/UnloadAllAssetsOperation.cs index c5033d92..a8b58e23 100644 --- a/Assets/YooAsset/Runtime/ResourceManager/Operation/UnloadAllAssetsOperation.cs +++ b/Assets/YooAsset/Runtime/ResourceManager/Operation/UnloadAllAssetsOperation.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using UnityEngine; namespace YooAsset @@ -72,7 +73,10 @@ namespace YooAsset // 释放所有资源句柄 if (_options.ReleaseAllHandles) { - foreach (var provider in _resManager.ProviderDic.Values) + // 注意:创建快照,因为释放句柄可能触发自动卸载逻辑(AutoUnloadBundleWhenUnused), + // 进而修改 ProviderDic 容器,导致遍历时抛出 InvalidOperationException。 + var snapshot = new List(_resManager.ProviderDic.Values); + foreach (var provider in snapshot) { provider.ReleaseAllHandles(); }