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

View File

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

View File

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

View File

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

View File

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

View File

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