This commit is contained in:
何冠峰
2025-09-11 11:07:13 +08:00
parent 5fde689f1f
commit 81d9eb47c8
2 changed files with 17 additions and 6 deletions

View File

@@ -83,6 +83,7 @@ namespace YooAsset
{ {
if (_loadBundleOp == null) if (_loadBundleOp == null)
{ {
// 统计计数增加
_resManager.BundleLoadingCounter++; _resManager.BundleLoadingCounter++;
_loadBundleOp = LoadBundleInfo.LoadBundleFile(); _loadBundleOp = LoadBundleInfo.LoadBundleFile();
_loadBundleOp.StartOperation(); _loadBundleOp.StartOperation();
@@ -163,11 +164,12 @@ namespace YooAsset
{ {
IsDestroyed = true; IsDestroyed = true;
// Check fatal // 注意:正在加载中的任务不可以销毁
if (_steps == ESteps.LoadBundleFile)
throw new Exception($"Bundle file loader is not done : {LoadBundleInfo.Bundle.BundleName}");
if (RefCount > 0) if (RefCount > 0)
throw new Exception($"Bundle file loader ref is not zero : {LoadBundleInfo.Bundle.BundleName}"); throw new Exception($"Bundle file loader ref is not zero : {LoadBundleInfo.Bundle.BundleName}");
if (IsDone == false)
throw new Exception($"Bundle file loader is not done : {LoadBundleInfo.Bundle.BundleName}");
if (Result != null) if (Result != null)
Result.UnloadBundleFile(); Result.UnloadBundleFile();
@@ -178,7 +180,8 @@ namespace YooAsset
/// </summary> /// </summary>
public bool CanDestroyLoader() public bool CanDestroyLoader()
{ {
if (IsDone == false) // 注意:正在加载中的任务不可以销毁
if (_steps == ESteps.LoadBundleFile)
return false; return false;
if (RefCount > 0) if (RefCount > 0)

View File

@@ -109,6 +109,13 @@ namespace YooAsset
if (_steps == ESteps.None || _steps == ESteps.Done) if (_steps == ESteps.None || _steps == ESteps.Done)
return; return;
// 注意:未在加载中的任务可以挂起!
if (_steps != ESteps.ProcessBundleResult)
{
if (RefCount <= 0)
return;
}
if (_steps == ESteps.StartBundleLoader) if (_steps == ESteps.StartBundleLoader)
{ {
foreach (var bundleLoader in _bundleLoaders) foreach (var bundleLoader in _bundleLoaders)
@@ -192,8 +199,9 @@ namespace YooAsset
// 检测是否为正常销毁 // 检测是否为正常销毁
if (IsDone == false) if (IsDone == false)
{ {
Error = "User abort !"; _steps = ESteps.Done;
Status = EOperationStatus.Failed; Status = EOperationStatus.Failed;
Error = "User abort !";
} }
// 减少引用计数 // 减少引用计数
@@ -208,7 +216,7 @@ namespace YooAsset
/// </summary> /// </summary>
public bool CanDestroyProvider() public bool CanDestroyProvider()
{ {
// 注意:在进行资源加载过程时不可以销毁 // 注意:正在加载中的任务不可以销毁
if (_steps == ESteps.ProcessBundleResult) if (_steps == ESteps.ProcessBundleResult)
return false; return false;