Update runtime logic

在初始化失败的时候,销毁YooAssets会报异常。
pull/62/head
hevinci 2022-12-03 19:48:17 +08:00
parent 6038e7acd6
commit a290353cfa
6 changed files with 34 additions and 15 deletions

View File

@ -73,15 +73,15 @@ namespace YooAsset
{
provider.Destroy();
}
_providers.Clear();
foreach (var loader in _loaders)
{
loader.Destroy(true);
}
_providers.Clear();
_loaders.Clear();
ClearSceneHandle();
ClearSceneHandle();
DecryptionServices = null;
BundleServices = null;
}
@ -298,6 +298,8 @@ namespace YooAsset
internal void ClearSceneHandle()
{
// 释放资源包下的所有场景
if (BundleServices.IsServicesValid())
{
string packageName = BundleServices.GetPackageName();
List<string> removeList = new List<string>();
foreach (var valuePair in _sceneHandles)
@ -307,12 +309,12 @@ namespace YooAsset
removeList.Add(valuePair.Key);
}
}
foreach (var key in removeList)
{
_sceneHandles.Remove(key);
}
}
}
internal BundleLoaderBase CreateOwnerAssetBundleLoader(AssetInfo assetInfo)
{

View File

@ -132,7 +132,7 @@ namespace YooAsset
}
private void ResetInitializeAfterFailed()
{
if(_isInitialize && _initializeStatus == EOperationStatus.Failed)
if (_isInitialize && _initializeStatus == EOperationStatus.Failed)
{
_isInitialize = false;
_initializeStatus = EOperationStatus.None;

View File

@ -78,6 +78,10 @@ namespace YooAsset
{
return _simulatePatchManifest.IsIncludeBundleFile(fileName);
}
bool IBundleServices.IsServicesValid()
{
return _simulatePatchManifest != null;
}
#endregion
}
}

View File

@ -428,6 +428,10 @@ namespace YooAsset
{
return LocalPatchManifest.IsIncludeBundleFile(fileName);
}
bool IBundleServices.IsServicesValid()
{
return LocalPatchManifest != null;
}
#endregion
}
}

View File

@ -129,6 +129,10 @@ namespace YooAsset
{
return _appPatchManifest.IsIncludeBundleFile(fileName);
}
bool IBundleServices.IsServicesValid()
{
return _appPatchManifest != null;
}
#endregion
}
}

View File

@ -42,5 +42,10 @@ namespace YooAsset
/// 是否包含资源文件
/// </summary>
bool IsIncludeBundleFile(string fileName);
/// <summary>
/// 服务接口是否有效
/// </summary>
bool IsServicesValid();
}
}