diff --git a/Assets/YooAsset/Runtime/ResourceManager/ResourceManager.cs b/Assets/YooAsset/Runtime/ResourceManager/ResourceManager.cs
index 1b36583d..5d8c2666 100644
--- a/Assets/YooAsset/Runtime/ResourceManager/ResourceManager.cs
+++ b/Assets/YooAsset/Runtime/ResourceManager/ResourceManager.cs
@@ -60,7 +60,7 @@ namespace YooAsset
///
/// 尝试卸载指定资源的资源包(包括依赖资源)
///
- public void TryUnloadUnusedAsset(AssetInfo assetInfo)
+ public void TryUnloadUnusedAsset(AssetInfo assetInfo, int loopCount)
{
if (assetInfo.IsInvalid)
{
@@ -68,34 +68,39 @@ namespace YooAsset
return;
}
- // 卸载主资源包加载器
- string mainBundleName = _bundleQuery.GetMainBundleName(assetInfo);
- var mainLoader = TryGetBundleFileLoader(mainBundleName);
- if (mainLoader != null)
+ while (loopCount > 0)
{
- mainLoader.TryDestroyProviders();
- if (mainLoader.CanDestroyLoader())
- {
- string bundleName = mainLoader.LoadBundleInfo.Bundle.BundleName;
- mainLoader.DestroyLoader();
- LoaderDic.Remove(bundleName);
- }
- }
+ loopCount--;
- // 卸载依赖资源包加载器
- string[] dependBundleNames = _bundleQuery.GetDependBundleNames(assetInfo);
- foreach (var dependBundleName in dependBundleNames)
- {
- var dependLoader = TryGetBundleFileLoader(dependBundleName);
- if (dependLoader != null)
+ // 卸载主资源包加载器
+ string mainBundleName = _bundleQuery.GetMainBundleName(assetInfo);
+ var mainLoader = TryGetBundleFileLoader(mainBundleName);
+ if (mainLoader != null)
{
- if (dependLoader.CanDestroyLoader())
+ mainLoader.TryDestroyProviders();
+ if (mainLoader.CanDestroyLoader())
{
- string bundleName = dependLoader.LoadBundleInfo.Bundle.BundleName;
- dependLoader.DestroyLoader();
+ string bundleName = mainLoader.LoadBundleInfo.Bundle.BundleName;
+ mainLoader.DestroyLoader();
LoaderDic.Remove(bundleName);
}
}
+
+ // 卸载依赖资源包加载器
+ string[] dependBundleNames = _bundleQuery.GetDependBundleNames(assetInfo);
+ foreach (var dependBundleName in dependBundleNames)
+ {
+ var dependLoader = TryGetBundleFileLoader(dependBundleName);
+ if (dependLoader != null)
+ {
+ if (dependLoader.CanDestroyLoader())
+ {
+ string bundleName = dependLoader.LoadBundleInfo.Bundle.BundleName;
+ dependLoader.DestroyLoader();
+ LoaderDic.Remove(bundleName);
+ }
+ }
+ }
}
}
diff --git a/Assets/YooAsset/Runtime/ResourcePackage/ResourcePackage.cs b/Assets/YooAsset/Runtime/ResourcePackage/ResourcePackage.cs
index 055a5e6c..3a8c0256 100644
--- a/Assets/YooAsset/Runtime/ResourcePackage/ResourcePackage.cs
+++ b/Assets/YooAsset/Runtime/ResourcePackage/ResourcePackage.cs
@@ -361,21 +361,21 @@ namespace YooAsset
/// 资源回收
/// 说明:尝试卸载指定的资源
///
- public void TryUnloadUnusedAsset(string location)
+ public void TryUnloadUnusedAsset(string location, int loopCount = 10)
{
DebugCheckInitialize();
AssetInfo assetInfo = ConvertLocationToAssetInfo(location, null);
- _resourceManager.TryUnloadUnusedAsset(assetInfo);
+ _resourceManager.TryUnloadUnusedAsset(assetInfo, loopCount);
}
///
/// 资源回收
/// 说明:尝试卸载指定的资源
///
- public void TryUnloadUnusedAsset(AssetInfo assetInfo)
+ public void TryUnloadUnusedAsset(AssetInfo assetInfo, int loopCount = 10)
{
DebugCheckInitialize();
- _resourceManager.TryUnloadUnusedAsset(assetInfo);
+ _resourceManager.TryUnloadUnusedAsset(assetInfo, loopCount);
}
#endregion