From c758aa81ff32047453196f70d60e6745b8a2f99c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E5=86=A0=E5=B3=B0?= Date: Tue, 25 Feb 2025 12:18:16 +0800 Subject: [PATCH] update runtime code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重构了OperationSystem的机制。从列表模式修改为链模式 --- .../AssetBundleResult/AssetBundleResult.cs | 4 - .../RawBundleResult/RawBundleResult.cs | 4 - .../VirtualBundleResult.cs | 4 - .../DefaultBuildinFileSystem.cs | 18 ++--- .../Operation/DBFSInitializeOperation.cs | 13 +++- .../Operation/DBFSLoadBundleOperation.cs | 6 -- .../DBFSLoadPackageManifestOperation.cs | 8 +- .../DBFSRequestPackageVersionOperation.cs | 4 +- .../CopyBuildinPackageManifestOperation.cs | 12 ++- .../LoadBuildinPackageManifestOperation.cs | 8 +- .../RequestBuildinPackageHashOperation.cs | 4 +- .../RequestBuildinPackageVersionOperation.cs | 4 +- .../DefaultCacheFileSystem.cs | 32 ++++---- .../Operation/DCFSInitializeOperation.cs | 24 +++++- .../Operation/DCFSLoadBundleOperation.cs | 22 ++---- .../DCFSLoadPackageManifestOperation.cs | 16 +++- .../DCFSRequestPackageVersionOperation.cs | 4 +- .../internal/DownloadCenterOperation.cs} | 23 +++--- .../internal/DownloadCenterOperation.cs.meta} | 0 .../internal/DownloadNormalFileOperation.cs | 4 +- .../internal/DownloadPackageHashOperation.cs | 4 +- .../DownloadPackageManifestOperation.cs | 4 +- .../internal/DownloadResumeFileOperation.cs | 4 +- .../LoadCachePackageManifestOperation.cs | 4 +- .../RequestRemotePackageVersionOperation.cs | 4 +- .../DefaultEditorFileSystem.cs | 8 +- .../Operation/DEFSLoadBundleOperation.cs | 3 - .../DEFSLoadPackageManifestOperation.cs | 8 +- .../DEFSRequestPackageVersionOperation.cs | 4 +- .../LoadEditorPackageManifestOperation.cs | 4 +- .../DefaultWebRemoteFileSystem.cs | 8 +- .../Operation/DWRFSLoadBundleOperation.cs | 15 ++-- .../DWRFSLoadPackageManifestOperation.cs | 8 +- .../DWRFSRequestPackageVersionOperation.cs | 4 +- .../LoadWebRemotePackageManifestOperation.cs | 8 +- .../RequestWebRemotePackageHashOperation.cs | 4 +- ...RequestWebRemotePackageVersionOperation.cs | 4 +- .../DefaultWebServerFileSystem.cs | 8 +- .../Operation/DWSFSInitializeOperation.cs | 6 +- .../Operation/DWSFSLoadBundleOperation.cs | 15 ++-- .../DWSFSLoadPackageManifestOperation.cs | 8 +- .../DWSFSRequestPackageVersionOperation.cs | 4 +- .../LoadWebServerPackageManifestOperation.cs | 8 +- .../RequestWebServerPackageHashOperation.cs | 4 +- ...RequestWebServerPackageVersionOperation.cs | 4 +- .../FileSystem/Interface/IFileSystem.cs | 6 +- .../Operation/FSLoadBundleFileOperation.cs | 11 +-- .../OperationSystem/AsyncOperationBase.cs | 76 +++++++++++++------ .../OperationSystem/GameAsyncOperation.cs | 2 +- .../OperationSystem/OperationSystem.cs | 15 ++-- .../Operation/InstantiateOperation.cs | 2 +- .../Internal/LoadBundleFileOperation.cs | 14 ++-- .../Operation/UnloadAllAssetsOperation.cs | 2 +- .../Provider/AllAssetsProvider.cs | 3 + .../ResourceManager/Provider/AssetProvider.cs | 3 + .../Provider/ProviderOperation.cs | 25 +++++- .../ResourceManager/Provider/SceneProvider.cs | 3 + .../Provider/SubAssetsProvider.cs | 3 + .../ResourceManager/ResourceManager.cs | 1 - .../ResourcePackage/Interface/IPlayMode.cs | 4 +- .../Operation/ClearCacheFilesOperation.cs | 17 ++++- .../Operation/DestroyOperation.cs | 5 ++ .../Operation/InitializationOperation.cs | 32 +++++++- .../Operation/PreDownloadContentOperation.cs | 3 + .../RequestPackageVersionOperation.cs | 5 ++ .../UpdatePackageManifestOperation.cs | 5 ++ .../PlayMode/EditorSimulateModeImpl.cs | 4 +- .../PlayMode/HostPlayModeImpl.cs | 7 +- .../PlayMode/OfflinePlayModeImpl.cs | 4 +- .../PlayMode/WebPlayModeImpl.cs | 6 +- .../ResourcePackage/ResourcePackage.cs | 13 +--- Assets/YooAsset/Runtime/YooAssets.cs | 5 -- 72 files changed, 385 insertions(+), 260 deletions(-) rename Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/{DefaultCacheDownloadCenter.cs => Operation/internal/DownloadCenterOperation.cs} (89%) rename Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/{DefaultCacheDownloadCenter.cs.meta => Operation/internal/DownloadCenterOperation.cs.meta} (100%) diff --git a/Assets/YooAsset/Runtime/FileSystem/BundleResult/AssetBundleResult/AssetBundleResult.cs b/Assets/YooAsset/Runtime/FileSystem/BundleResult/AssetBundleResult/AssetBundleResult.cs index 813587ac..587674ff 100644 --- a/Assets/YooAsset/Runtime/FileSystem/BundleResult/AssetBundleResult/AssetBundleResult.cs +++ b/Assets/YooAsset/Runtime/FileSystem/BundleResult/AssetBundleResult/AssetBundleResult.cs @@ -48,25 +48,21 @@ namespace YooAsset public override FSLoadAssetOperation LoadAssetAsync(AssetInfo assetInfo) { var operation = new AssetBundleLoadAssetOperation(_packageBundle, _assetBundle, assetInfo); - OperationSystem.StartOperation(_fileSystem.PackageName, operation); return operation; } public override FSLoadAllAssetsOperation LoadAllAssetsAsync(AssetInfo assetInfo) { var operation = new AssetBundleLoadAllAssetsOperation(_packageBundle, _assetBundle, assetInfo); - OperationSystem.StartOperation(_fileSystem.PackageName, operation); return operation; } public override FSLoadSubAssetsOperation LoadSubAssetsAsync(AssetInfo assetInfo) { var operation = new AssetBundleLoadSubAssetsOperation(_packageBundle, _assetBundle, assetInfo); - OperationSystem.StartOperation(_fileSystem.PackageName, operation); return operation; } public override FSLoadSceneOperation LoadSceneOperation(AssetInfo assetInfo, LoadSceneParameters loadParams, bool suspendLoad) { var operation = new AssetBundleLoadSceneOperation(assetInfo, loadParams, suspendLoad); - OperationSystem.StartOperation(_fileSystem.PackageName, operation); return operation; } } diff --git a/Assets/YooAsset/Runtime/FileSystem/BundleResult/RawBundleResult/RawBundleResult.cs b/Assets/YooAsset/Runtime/FileSystem/BundleResult/RawBundleResult/RawBundleResult.cs index 951ff8f9..6a42ddc2 100644 --- a/Assets/YooAsset/Runtime/FileSystem/BundleResult/RawBundleResult/RawBundleResult.cs +++ b/Assets/YooAsset/Runtime/FileSystem/BundleResult/RawBundleResult/RawBundleResult.cs @@ -32,25 +32,21 @@ namespace YooAsset public override FSLoadAssetOperation LoadAssetAsync(AssetInfo assetInfo) { var operation = new RawBundleLoadAssetOperation(); - OperationSystem.StartOperation(_fileSystem.PackageName, operation); return operation; } public override FSLoadAllAssetsOperation LoadAllAssetsAsync(AssetInfo assetInfo) { var operation = new RawBundleLoadAllAssetsOperation(); - OperationSystem.StartOperation(_fileSystem.PackageName, operation); return operation; } public override FSLoadSubAssetsOperation LoadSubAssetsAsync(AssetInfo assetInfo) { var operation = new RawBundleLoadSubAssetsOperation(); - OperationSystem.StartOperation(_fileSystem.PackageName, operation); return operation; } public override FSLoadSceneOperation LoadSceneOperation(AssetInfo assetInfo, LoadSceneParameters loadParams, bool suspendLoad) { var operation = new RawBundleLoadSceneOperation(); - OperationSystem.StartOperation(_fileSystem.PackageName, operation); return operation; } } diff --git a/Assets/YooAsset/Runtime/FileSystem/BundleResult/VirtualBundleResult/VirtualBundleResult.cs b/Assets/YooAsset/Runtime/FileSystem/BundleResult/VirtualBundleResult/VirtualBundleResult.cs index 32aecadd..3ed31901 100644 --- a/Assets/YooAsset/Runtime/FileSystem/BundleResult/VirtualBundleResult/VirtualBundleResult.cs +++ b/Assets/YooAsset/Runtime/FileSystem/BundleResult/VirtualBundleResult/VirtualBundleResult.cs @@ -32,25 +32,21 @@ namespace YooAsset public override FSLoadAssetOperation LoadAssetAsync(AssetInfo assetInfo) { var operation = new VirtualBundleLoadAssetOperation(_packageBundle, assetInfo); - OperationSystem.StartOperation(_fileSystem.PackageName, operation); return operation; } public override FSLoadAllAssetsOperation LoadAllAssetsAsync(AssetInfo assetInfo) { var operation = new VirtualBundleLoadAllAssetsOperation(_packageBundle, assetInfo); - OperationSystem.StartOperation(_fileSystem.PackageName, operation); return operation; } public override FSLoadSubAssetsOperation LoadSubAssetsAsync(AssetInfo assetInfo) { var operation = new VirtualBundleLoadSubAssetsOperation(_packageBundle, assetInfo); - OperationSystem.StartOperation(_fileSystem.PackageName, operation); return operation; } public override FSLoadSceneOperation LoadSceneOperation(AssetInfo assetInfo, LoadSceneParameters loadParams, bool suspendLoad) { var operation = new VirtualBundleLoadSceneOperation(assetInfo, loadParams, suspendLoad); - OperationSystem.StartOperation(_fileSystem.PackageName, operation); return operation; } } diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs index 86c81f98..56d1ef5e 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs @@ -92,19 +92,16 @@ namespace YooAsset public virtual FSInitializeFileSystemOperation InitializeFileSystemAsync() { var operation = new DBFSInitializeOperation(this); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSLoadPackageManifestOperation LoadPackageManifestAsync(string packageVersion, int timeout) { var operation = new DBFSLoadPackageManifestOperation(this, packageVersion); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSRequestPackageVersionOperation RequestPackageVersionAsync(bool appendTimeTicks, int timeout) { var operation = new DBFSRequestPackageVersionOperation(this); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSClearCacheFilesOperation ClearCacheFilesAsync(PackageManifest manifest, string clearMode, object clearParam) @@ -127,20 +124,17 @@ namespace YooAsset if (bundle.BundleType == (int)EBuildBundleType.AssetBundle) { var operation = new DBFSLoadAssetBundleOperation(this, bundle); - OperationSystem.StartOperation(PackageName, operation); return operation; } else if (bundle.BundleType == (int)EBuildBundleType.RawBundle) { var operation = new DBFSLoadRawBundleOperation(this, bundle); - OperationSystem.StartOperation(PackageName, operation); return operation; } else { string error = $"{nameof(DefaultBuildinFileSystem)} not support load bundle type : {bundle.BundleType}"; var operation = new FSLoadBundleCompleteOperation(error); - OperationSystem.StartOperation(PackageName, operation); return operation; } } @@ -194,9 +188,8 @@ namespace YooAsset _unpackFileSystem.SetParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, DecryptionServices); _unpackFileSystem.OnCreate(packageName, null); } - public virtual void OnUpdate() + public virtual void OnDestroy() { - _unpackFileSystem.OnUpdate(); } public virtual bool Belong(PackageBundle bundle) @@ -346,10 +339,13 @@ namespace YooAsset return false; #if UNITY_ANDROID - if (bundle.BundleType == (int)EBuildBundleType.RawBundle || bundle.Encrypted) + if (bundle.Encrypted) return true; - else - return false; + + if (bundle.BundleType == (int)EBuildBundleType.RawBundle) + return true; + + return false; #else return false; #endif diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSInitializeOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSInitializeOperation.cs index e2e2e5b4..2cc48f3a 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSInitializeOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSInitializeOperation.cs @@ -47,9 +47,11 @@ namespace YooAsset if (_copyBuildinPackageManifestOp == null) { _copyBuildinPackageManifestOp = new CopyBuildinPackageManifestOperation(_fileSystem); - OperationSystem.StartOperation(_fileSystem.PackageName, _copyBuildinPackageManifestOp); + _copyBuildinPackageManifestOp.StartOperation(); + AddChildOperation(_copyBuildinPackageManifestOp); } + _copyBuildinPackageManifestOp.UpdateOperation(); if (_copyBuildinPackageManifestOp.IsDone == false) return; @@ -68,8 +70,13 @@ namespace YooAsset if (_steps == ESteps.InitUnpackFileSystem) { if (_initUnpackFIleSystemOp == null) + { _initUnpackFIleSystemOp = _fileSystem.InitializeUpackFileSystem(); + _initUnpackFIleSystemOp.StartOperation(); + AddChildOperation(_initUnpackFIleSystemOp); + } + _initUnpackFIleSystemOp.UpdateOperation(); Progress = _initUnpackFIleSystemOp.Progress; if (_initUnpackFIleSystemOp.IsDone == false) return; @@ -113,9 +120,11 @@ namespace YooAsset #endif _loadCatalogFileOp = new LoadBuildinCatalogFileOperation(_fileSystem); - OperationSystem.StartOperation(_fileSystem.PackageName, _loadCatalogFileOp); + _loadCatalogFileOp.StartOperation(); + AddChildOperation(_loadCatalogFileOp); } + _loadCatalogFileOp.UpdateOperation(); if (_loadCatalogFileOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSLoadBundleOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSLoadBundleOperation.cs index 2a42e6b4..296763e8 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSLoadBundleOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSLoadBundleOperation.cs @@ -139,9 +139,6 @@ namespace YooAsset } } } - public override void AbortDownloadOperation() - { - } } /// @@ -206,8 +203,5 @@ namespace YooAsset } } } - public override void AbortDownloadOperation() - { - } } } \ No newline at end of file diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSLoadPackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSLoadPackageManifestOperation.cs index 0f5e9a83..0aa56daf 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSLoadPackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSLoadPackageManifestOperation.cs @@ -37,9 +37,11 @@ namespace YooAsset if (_requestBuildinPackageHashOp == null) { _requestBuildinPackageHashOp = new RequestBuildinPackageHashOperation(_fileSystem, _packageVersion); - OperationSystem.StartOperation(_fileSystem.PackageName, _requestBuildinPackageHashOp); + _requestBuildinPackageHashOp.StartOperation(); + AddChildOperation(_requestBuildinPackageHashOp); } + _requestBuildinPackageHashOp.UpdateOperation(); if (_requestBuildinPackageHashOp.IsDone == false) return; @@ -61,9 +63,11 @@ namespace YooAsset { string packageHash = _requestBuildinPackageHashOp.PackageHash; _loadBuildinPackageManifestOp = new LoadBuildinPackageManifestOperation(_fileSystem, _packageVersion, packageHash); - OperationSystem.StartOperation(_fileSystem.PackageName, _loadBuildinPackageManifestOp); + _loadBuildinPackageManifestOp.StartOperation(); + AddChildOperation(_loadBuildinPackageManifestOp); } + _loadBuildinPackageManifestOp.UpdateOperation(); if (_loadBuildinPackageManifestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSRequestPackageVersionOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSRequestPackageVersionOperation.cs index b5918cb5..24b4a6e8 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSRequestPackageVersionOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSRequestPackageVersionOperation.cs @@ -33,9 +33,11 @@ namespace YooAsset if (_requestBuildinPackageVersionOp == null) { _requestBuildinPackageVersionOp = new RequestBuildinPackageVersionOperation(_fileSystem); - OperationSystem.StartOperation(_fileSystem.PackageName, _requestBuildinPackageVersionOp); + _requestBuildinPackageVersionOp.StartOperation(); + AddChildOperation(_requestBuildinPackageVersionOp); } + _requestBuildinPackageVersionOp.UpdateOperation(); if (_requestBuildinPackageVersionOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/CopyBuildinPackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/CopyBuildinPackageManifestOperation.cs index c8ceebd3..67f16f13 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/CopyBuildinPackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/CopyBuildinPackageManifestOperation.cs @@ -43,9 +43,11 @@ namespace YooAsset if (_requestBuildinPackageVersionOp == null) { _requestBuildinPackageVersionOp = new RequestBuildinPackageVersionOperation(_fileSystem); - OperationSystem.StartOperation(_fileSystem.PackageName, _requestBuildinPackageVersionOp); + _requestBuildinPackageVersionOp.StartOperation(); + AddChildOperation(_requestBuildinPackageVersionOp); } + _requestBuildinPackageVersionOp.UpdateOperation(); if (_requestBuildinPackageVersionOp.IsDone == false) return; @@ -82,9 +84,11 @@ namespace YooAsset string destPath = GetCopyPackageHashDestPath(_buildinPackageVersion); string url = DownloadSystemHelper.ConvertToWWWPath(sourcePath); _hashFileRequestOp = new UnityWebFileRequestOperation(url, destPath); - OperationSystem.StartOperation(_fileSystem.PackageName, _hashFileRequestOp); + _hashFileRequestOp.StartOperation(); + AddChildOperation(_hashFileRequestOp); } + _hashFileRequestOp.UpdateOperation(); if (_hashFileRequestOp.IsDone == false) return; @@ -121,9 +125,11 @@ namespace YooAsset string destPath = GetCopyPackageManifestDestPath(_buildinPackageVersion); string url = DownloadSystemHelper.ConvertToWWWPath(sourcePath); _manifestFileRequestOp = new UnityWebFileRequestOperation(url, destPath); - OperationSystem.StartOperation(_fileSystem.PackageName, _manifestFileRequestOp); + _manifestFileRequestOp.StartOperation(); + AddChildOperation(_manifestFileRequestOp); } + _manifestFileRequestOp.UpdateOperation(); if (_manifestFileRequestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/LoadBuildinPackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/LoadBuildinPackageManifestOperation.cs index f303a0ed..06429a8a 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/LoadBuildinPackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/LoadBuildinPackageManifestOperation.cs @@ -47,9 +47,11 @@ namespace YooAsset string filePath = _fileSystem.GetBuildinPackageManifestFilePath(_packageVersion); string url = DownloadSystemHelper.ConvertToWWWPath(filePath); _webDataRequestOp = new UnityWebDataRequestOperation(url); - OperationSystem.StartOperation(_fileSystem.PackageName, _webDataRequestOp); + _webDataRequestOp.StartOperation(); + AddChildOperation(_webDataRequestOp); } + _webDataRequestOp.UpdateOperation(); if (_webDataRequestOp.IsDone == false) return; @@ -85,9 +87,11 @@ namespace YooAsset if (_deserializer == null) { _deserializer = new DeserializeManifestOperation(_webDataRequestOp.Result); - OperationSystem.StartOperation(_fileSystem.PackageName, _deserializer); + _deserializer.StartOperation(); + AddChildOperation(_deserializer); } + _deserializer.UpdateOperation(); Progress = _deserializer.Progress; if (_deserializer.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/RequestBuildinPackageHashOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/RequestBuildinPackageHashOperation.cs index 31cf75b2..5fdfefda 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/RequestBuildinPackageHashOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/RequestBuildinPackageHashOperation.cs @@ -42,9 +42,11 @@ namespace YooAsset string filePath = _fileSystem.GetBuildinPackageHashFilePath(_packageVersion); string url = DownloadSystemHelper.ConvertToWWWPath(filePath); _webTextRequestOp = new UnityWebTextRequestOperation(url); - OperationSystem.StartOperation(_fileSystem.PackageName, _webTextRequestOp); + _webTextRequestOp.StartOperation(); + AddChildOperation(_webTextRequestOp); } + _webTextRequestOp.UpdateOperation(); if (_webTextRequestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/RequestBuildinPackageVersionOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/RequestBuildinPackageVersionOperation.cs index a0de67ca..b70598cb 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/RequestBuildinPackageVersionOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/RequestBuildinPackageVersionOperation.cs @@ -40,9 +40,11 @@ namespace YooAsset string filePath = _fileSystem.GetBuildinPackageVersionFilePath(); string url = DownloadSystemHelper.ConvertToWWWPath(filePath); _webTextRequestOp = new UnityWebTextRequestOperation(url); - OperationSystem.StartOperation(_fileSystem.PackageName, _webTextRequestOp); + _webTextRequestOp.StartOperation(); + AddChildOperation(_webTextRequestOp); } + _webTextRequestOp.UpdateOperation(); if (_webTextRequestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs index 17939118..ddf93e3e 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs @@ -15,13 +15,18 @@ namespace YooAsset protected readonly Dictionary _bundleDataFilePathMapping = new Dictionary(10000); protected readonly Dictionary _bundleInfoFilePathMapping = new Dictionary(10000); protected readonly Dictionary _tempFilePathMapping = new Dictionary(10000); - protected DefaultCacheDownloadCenter _downloadCenter; protected string _packageRoot; protected string _tempFilesRoot; protected string _cacheBundleFilesRoot; protected string _cacheManifestFilesRoot; + /// + /// 下载中心 + /// 说明:当异步操作任务终止的时候,所有下载子任务都会一同被终止! + /// + public DownloadCenterOperation DownloadCenter { set; get; } + /// /// 包裹名称 /// @@ -98,19 +103,16 @@ namespace YooAsset public virtual FSInitializeFileSystemOperation InitializeFileSystemAsync() { var operation = new DCFSInitializeOperation(this); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSLoadPackageManifestOperation LoadPackageManifestAsync(string packageVersion, int timeout) { var operation = new DCFSLoadPackageManifestOperation(this, packageVersion, timeout); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSRequestPackageVersionOperation RequestPackageVersionAsync(bool appendTimeTicks, int timeout) { var operation = new DCFSRequestPackageVersionOperation(this, appendTimeTicks, timeout); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSClearCacheFilesOperation ClearCacheFilesAsync(PackageManifest manifest, string clearMode, object clearParam) @@ -118,64 +120,57 @@ namespace YooAsset if (clearMode == EFileClearMode.ClearAllBundleFiles.ToString()) { var operation = new ClearAllCacheBundleFilesOperation(this); - OperationSystem.StartOperation(PackageName, operation); return operation; } else if (clearMode == EFileClearMode.ClearUnusedBundleFiles.ToString()) { var operation = new ClearUnusedCacheBundleFilesOperation(this, manifest); - OperationSystem.StartOperation(PackageName, operation); return operation; } else if (clearMode == EFileClearMode.ClearBundleFilesByTags.ToString()) { var operation = new ClearCacheBundleFilesByTagsOperaiton(this, manifest, clearParam); - OperationSystem.StartOperation(PackageName, operation); return operation; } else if (clearMode == EFileClearMode.ClearAllManifestFiles.ToString()) { var operation = new ClearAllCacheManifestFilesOperation(this); - OperationSystem.StartOperation(PackageName, operation); return operation; } else if (clearMode == EFileClearMode.ClearUnusedManifestFiles.ToString()) { var operation = new ClearUnusedCacheManifestFilesOperation(this, manifest); - OperationSystem.StartOperation(PackageName, operation); return operation; } else { string error = $"Invalid clear mode : {clearMode}"; var operation = new FSClearCacheFilesCompleteOperation(error); - OperationSystem.StartOperation(PackageName, operation); return operation; } } public virtual FSDownloadFileOperation DownloadFileAsync(PackageBundle bundle, DownloadParam param) { - return _downloadCenter.DownloadFileAsync(bundle, param); + var downloader = DownloadCenter.DownloadFileAsync(bundle, param); + downloader.Reference(); //增加下载器的引用计数 + return downloader; } public virtual FSLoadBundleOperation LoadBundleFile(PackageBundle bundle) { if (bundle.BundleType == (int)EBuildBundleType.AssetBundle) { var operation = new DCFSLoadAssetBundleOperation(this, bundle); - OperationSystem.StartOperation(PackageName, operation); return operation; } else if (bundle.BundleType == (int)EBuildBundleType.RawBundle) { var operation = new DCFSLoadRawBundleOperation(this, bundle); - OperationSystem.StartOperation(PackageName, operation); return operation; } else { string error = $"{nameof(DefaultCacheFileSystem)} not support load bundle type : {bundle.BundleType}"; var operation = new FSLoadBundleCompleteOperation(error); - OperationSystem.StartOperation(PackageName, operation); return operation; } } @@ -231,11 +226,14 @@ namespace YooAsset _cacheBundleFilesRoot = PathUtility.Combine(_packageRoot, DefaultCacheFileSystemDefine.BundleFilesFolderName); _tempFilesRoot = PathUtility.Combine(_packageRoot, DefaultCacheFileSystemDefine.TempFilesFolderName); _cacheManifestFilesRoot = PathUtility.Combine(_packageRoot, DefaultCacheFileSystemDefine.ManifestFilesFolderName); - _downloadCenter = new DefaultCacheDownloadCenter(this); } - public virtual void OnUpdate() + public virtual void OnDestroy() { - _downloadCenter.Update(); + if (DownloadCenter != null) + { + DownloadCenter.AbortOperation(); + DownloadCenter = null; + } } public virtual bool Belong(PackageBundle bundle) diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSInitializeOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSInitializeOperation.cs index 928f607c..7e84a1b3 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSInitializeOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSInitializeOperation.cs @@ -9,6 +9,7 @@ namespace YooAsset CheckAppFootPrint, SearchCacheFiles, VerifyCacheFiles, + CreateDownloadCenter, Done, } @@ -58,9 +59,11 @@ namespace YooAsset if (_searchCacheFilesOp == null) { _searchCacheFilesOp = new SearchCacheFilesOperation(_fileSystem); - OperationSystem.StartOperation(_fileSystem.PackageName, _searchCacheFilesOp); + _searchCacheFilesOp.StartOperation(); + AddChildOperation(_searchCacheFilesOp); } + _searchCacheFilesOp.UpdateOperation(); Progress = _searchCacheFilesOp.Progress; if (_searchCacheFilesOp.IsDone == false) return; @@ -73,17 +76,18 @@ namespace YooAsset if (_verifyCacheFilesOp == null) { _verifyCacheFilesOp = new VerifyCacheFilesOperation(_fileSystem, _searchCacheFilesOp.Result); - OperationSystem.StartOperation(_fileSystem.PackageName, _verifyCacheFilesOp); + _verifyCacheFilesOp.StartOperation(); + AddChildOperation(_verifyCacheFilesOp); } + _verifyCacheFilesOp.UpdateOperation(); Progress = _verifyCacheFilesOp.Progress; if (_verifyCacheFilesOp.IsDone == false) return; if (_verifyCacheFilesOp.Status == EOperationStatus.Succeed) { - _steps = ESteps.Done; - Status = EOperationStatus.Succeed; + _steps = ESteps.CreateDownloadCenter; YooLogger.Log($"Package '{_fileSystem.PackageName}' cached files count : {_fileSystem.FileCount}"); } else @@ -93,6 +97,18 @@ namespace YooAsset Error = _verifyCacheFilesOp.Error; } } + + if (_steps == ESteps.CreateDownloadCenter) + { + if (_fileSystem.DownloadCenter == null) + { + _fileSystem.DownloadCenter = new DownloadCenterOperation(_fileSystem); + OperationSystem.StartOperation(_fileSystem.PackageName, _fileSystem.DownloadCenter); + } + + _steps = ESteps.Done; + Status = EOperationStatus.Succeed; + } } } } \ No newline at end of file diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSLoadBundleOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSLoadBundleOperation.cs index 8e4c3965..f4651558 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSLoadBundleOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSLoadBundleOperation.cs @@ -54,6 +54,9 @@ namespace YooAsset if (_steps == ESteps.DownloadFile) { + // 注意:下载的异步任务由管理器驱动 + // 注意:不加到子任务列表里,防止Abort的时候将下载器直接关闭! + // 注意:边玩边下下载器引用计数没有Release if (_downloadFileOp == null) { DownloadParam downloadParam = new DownloadParam(int.MaxValue, 60); @@ -219,14 +222,6 @@ namespace YooAsset } } } - public override void AbortDownloadOperation() - { - if (_steps == ESteps.DownloadFile) - { - if (_downloadFileOp != null) - _downloadFileOp.SetAbort(); - } - } } internal class DCFSLoadRawBundleOperation : FSLoadBundleOperation @@ -276,6 +271,9 @@ namespace YooAsset if (_steps == ESteps.DownloadFile) { + // 注意:下载的异步任务由管理器驱动 + // 注意:不加到子任务列表里,防止Abort的时候将下载器直接关闭! + // 注意:边玩边下下载器引用计数没有Release if (_downloadFileOp == null) { DownloadParam downloadParam = new DownloadParam(int.MaxValue, 60); @@ -335,13 +333,5 @@ namespace YooAsset } } } - public override void AbortDownloadOperation() - { - if (_steps == ESteps.DownloadFile) - { - if (_downloadFileOp != null) - _downloadFileOp.SetAbort(); - } - } } } \ No newline at end of file diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSLoadPackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSLoadPackageManifestOperation.cs index b90232ee..6b30db83 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSLoadPackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSLoadPackageManifestOperation.cs @@ -44,9 +44,11 @@ namespace YooAsset if (_downloadPackageHashOp == null) { _downloadPackageHashOp = new DownloadPackageHashOperation(_fileSystem, _packageVersion, _timeout); - OperationSystem.StartOperation(_fileSystem.PackageName, _downloadPackageHashOp); + _downloadPackageHashOp.StartOperation(); + AddChildOperation(_downloadPackageHashOp); } + _downloadPackageHashOp.UpdateOperation(); if (_downloadPackageHashOp.IsDone == false) return; @@ -67,9 +69,11 @@ namespace YooAsset if (_downloadPackageManifestOp == null) { _downloadPackageManifestOp = new DownloadPackageManifestOperation(_fileSystem, _packageVersion, _timeout); - OperationSystem.StartOperation(_fileSystem.PackageName, _downloadPackageManifestOp); + _downloadPackageManifestOp.StartOperation(); + AddChildOperation(_downloadPackageManifestOp); } + _downloadPackageManifestOp.UpdateOperation(); if (_downloadPackageManifestOp.IsDone == false) return; @@ -90,9 +94,11 @@ namespace YooAsset if (_loadCachePackageHashOp == null) { _loadCachePackageHashOp = new LoadCachePackageHashOperation(_fileSystem, _packageVersion); - OperationSystem.StartOperation(_fileSystem.PackageName, _loadCachePackageHashOp); + _loadCachePackageHashOp.StartOperation(); + AddChildOperation(_loadCachePackageHashOp); } + _loadCachePackageHashOp.UpdateOperation(); if (_loadCachePackageHashOp.IsDone == false) return; @@ -115,9 +121,11 @@ namespace YooAsset { string packageHash = _loadCachePackageHashOp.PackageHash; _loadCachePackageManifestOp = new LoadCachePackageManifestOperation(_fileSystem, _packageVersion, packageHash); - OperationSystem.StartOperation(_fileSystem.PackageName, _loadCachePackageManifestOp); + _loadCachePackageManifestOp.StartOperation(); + AddChildOperation(_loadCachePackageManifestOp); } + _loadCachePackageManifestOp.UpdateOperation(); Progress = _loadCachePackageManifestOp.Progress; if (_loadCachePackageManifestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSRequestPackageVersionOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSRequestPackageVersionOperation.cs index 7c72e30f..ac68534b 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSRequestPackageVersionOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSRequestPackageVersionOperation.cs @@ -37,9 +37,11 @@ namespace YooAsset if (_requestRemotePackageVersionOp == null) { _requestRemotePackageVersionOp = new RequestRemotePackageVersionOperation(_fileSystem, _appendTimeTicks, _timeout); - OperationSystem.StartOperation(_fileSystem.PackageName, _requestRemotePackageVersionOp); + _requestRemotePackageVersionOp.StartOperation(); + AddChildOperation(_requestRemotePackageVersionOp); } + _requestRemotePackageVersionOp.UpdateOperation(); Progress = _requestRemotePackageVersionOp.Progress; if (_requestRemotePackageVersionOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheDownloadCenter.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadCenterOperation.cs similarity index 89% rename from Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheDownloadCenter.cs rename to Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadCenterOperation.cs index d4dd78cf..09fa9514 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheDownloadCenter.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadCenterOperation.cs @@ -3,33 +3,33 @@ using System.Collections.Generic; namespace YooAsset { - internal class DefaultCacheDownloadCenter + internal class DownloadCenterOperation : AsyncOperationBase { private readonly DefaultCacheFileSystem _fileSystem; protected readonly Dictionary _downloaders = new Dictionary(1000); protected readonly List _removeDownloadList = new List(1000); - public DefaultCacheDownloadCenter(DefaultCacheFileSystem fileSystem) + public DownloadCenterOperation(DefaultCacheFileSystem fileSystem) { _fileSystem = fileSystem; } - - /// - /// 更新下载中心 - /// - public void Update() + internal override void InternalStart() + { + } + internal override void InternalUpdate() { // 获取可移除的下载器集合 _removeDownloadList.Clear(); foreach (var valuePair in _downloaders) { var downloader = valuePair.Value; + downloader.UpdateOperation(); // 注意:主动终止引用计数为零的下载任务 if (downloader.RefCount <= 0) { _removeDownloadList.Add(valuePair.Key); - downloader.SetAbort(); + downloader.AbortOperation(); continue; } @@ -61,7 +61,7 @@ namespace YooAsset var operation = operationPair.Value; if (operation.Status == EOperationStatus.None) { - OperationSystem.StartOperation(_fileSystem.PackageName, operation); + operation.StartOperation(); startCount--; if (startCount <= 0) break; @@ -79,7 +79,6 @@ namespace YooAsset // 查询旧的下载器 if (_downloaders.TryGetValue(bundle.BundleGUID, out var oldDownloader)) { - oldDownloader.Reference(); return oldDownloader; } @@ -101,13 +100,13 @@ namespace YooAsset if (bundle.FileSize >= _fileSystem.ResumeDownloadMinimumSize) { newDownloader = new DownloadResumeFileOperation(_fileSystem, bundle, param); - newDownloader.Reference(); + AddChildOperation(newDownloader); _downloaders.Add(bundle.BundleGUID, newDownloader); } else { newDownloader = new DownloadNormalFileOperation(_fileSystem, bundle, param); - newDownloader.Reference(); + AddChildOperation(newDownloader); _downloaders.Add(bundle.BundleGUID, newDownloader); } return newDownloader; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheDownloadCenter.cs.meta b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadCenterOperation.cs.meta similarity index 100% rename from Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheDownloadCenter.cs.meta rename to Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadCenterOperation.cs.meta diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadNormalFileOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadNormalFileOperation.cs index 25819600..890ce178 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadNormalFileOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadNormalFileOperation.cs @@ -89,7 +89,8 @@ namespace YooAsset { var element = new TempFileElement(_tempFilePath, Bundle.FileCRC, Bundle.FileSize); _verifyOperation = new VerifyTempFileOperation(element); - OperationSystem.StartOperation(_fileSystem.PackageName, _verifyOperation); + _verifyOperation.StartOperation(); + AddChildOperation(_verifyOperation); _steps = ESteps.CheckVerifyTempFile; } @@ -99,6 +100,7 @@ namespace YooAsset if (IsWaitForAsyncComplete) _verifyOperation.WaitForAsyncComplete(); + _verifyOperation.UpdateOperation(); if (_verifyOperation.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadPackageHashOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadPackageHashOperation.cs index d30dded8..0189e95a 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadPackageHashOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadPackageHashOperation.cs @@ -58,9 +58,11 @@ namespace YooAsset string fileName = YooAssetSettingsData.GetPackageHashFileName(_fileSystem.PackageName, _packageVersion); string webURL = GetWebRequestURL(fileName); _webFileRequestOp = new UnityWebFileRequestOperation(webURL, savePath, _timeout); - OperationSystem.StartOperation(_fileSystem.PackageName, _webFileRequestOp); + _webFileRequestOp.StartOperation(); + AddChildOperation(_webFileRequestOp); } + _webFileRequestOp.UpdateOperation(); if (_webFileRequestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadPackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadPackageManifestOperation.cs index 3258a6da..f4805f97 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadPackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadPackageManifestOperation.cs @@ -58,9 +58,11 @@ namespace YooAsset string fileName = YooAssetSettingsData.GetManifestBinaryFileName(_fileSystem.PackageName, _packageVersion); string webURL = GetDownloadRequestURL(fileName); _webFileRequestOp = new UnityWebFileRequestOperation(webURL, savePath, _timeout); - OperationSystem.StartOperation(_fileSystem.PackageName, _webFileRequestOp); + _webFileRequestOp.StartOperation(); + AddChildOperation(_webFileRequestOp); } + _webFileRequestOp.UpdateOperation(); if (_webFileRequestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadResumeFileOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadResumeFileOperation.cs index e892c2bc..2cca18c2 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadResumeFileOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadResumeFileOperation.cs @@ -110,7 +110,8 @@ namespace YooAsset { var element = new TempFileElement(_tempFilePath, Bundle.FileCRC, Bundle.FileSize); _verifyOperation = new VerifyTempFileOperation(element); - OperationSystem.StartOperation(_fileSystem.PackageName, _verifyOperation); + _verifyOperation.StartOperation(); + AddChildOperation(_verifyOperation); _steps = ESteps.CheckVerifyTempFile; } @@ -120,6 +121,7 @@ namespace YooAsset if (IsWaitForAsyncComplete) _verifyOperation.WaitForAsyncComplete(); + _verifyOperation.UpdateOperation(); if (_verifyOperation.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/LoadCachePackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/LoadCachePackageManifestOperation.cs index b846a7f4..bb78c060 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/LoadCachePackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/LoadCachePackageManifestOperation.cs @@ -77,9 +77,11 @@ namespace YooAsset if (_deserializer == null) { _deserializer = new DeserializeManifestOperation(_fileData); - OperationSystem.StartOperation(_fileSystem.PackageName, _deserializer); + _deserializer.StartOperation(); + AddChildOperation(_deserializer); } + _deserializer.UpdateOperation(); Progress = _deserializer.Progress; if (_deserializer.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/RequestRemotePackageVersionOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/RequestRemotePackageVersionOperation.cs index 12938fe4..1c8e4df7 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/RequestRemotePackageVersionOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/RequestRemotePackageVersionOperation.cs @@ -46,9 +46,11 @@ namespace YooAsset string fileName = YooAssetSettingsData.GetPackageVersionFileName(_fileSystem.PackageName); string url = GetWebRequestURL(fileName); _webTextRequestOp = new UnityWebTextRequestOperation(url, _timeout); - OperationSystem.StartOperation(_fileSystem.PackageName, _webTextRequestOp); + _webTextRequestOp.StartOperation(); + AddChildOperation(_webTextRequestOp); } + _webTextRequestOp.UpdateOperation(); Progress = _webTextRequestOp.Progress; if (_webTextRequestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/DefaultEditorFileSystem.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/DefaultEditorFileSystem.cs index 0736905e..f867e723 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/DefaultEditorFileSystem.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/DefaultEditorFileSystem.cs @@ -54,25 +54,21 @@ namespace YooAsset public virtual FSInitializeFileSystemOperation InitializeFileSystemAsync() { var operation = new DEFSInitializeOperation(this); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSLoadPackageManifestOperation LoadPackageManifestAsync(string packageVersion, int timeout) { var operation = new DEFSLoadPackageManifestOperation(this, packageVersion); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSRequestPackageVersionOperation RequestPackageVersionAsync(bool appendTimeTicks, int timeout) { var operation = new DEFSRequestPackageVersionOperation(this); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSClearCacheFilesOperation ClearCacheFilesAsync(PackageManifest manifest, string clearMode, object clearParam) { var operation = new FSClearCacheFilesCompleteOperation(); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSDownloadFileOperation DownloadFileAsync(PackageBundle bundle, DownloadParam param) @@ -84,14 +80,12 @@ namespace YooAsset if (bundle.BundleType == (int)EBuildBundleType.VirtualBundle) { var operation = new DEFSLoadBundleOperation(this, bundle); - OperationSystem.StartOperation(PackageName, operation); return operation; } else { string error = $"{nameof(DefaultEditorFileSystem)} not support load bundle type : {bundle.BundleType}"; var operation = new FSLoadBundleCompleteOperation(error); - OperationSystem.StartOperation(PackageName, operation); return operation; } } @@ -120,7 +114,7 @@ namespace YooAsset _packageRoot = packageRoot; } - public virtual void OnUpdate() + public virtual void OnDestroy() { } diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSLoadBundleOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSLoadBundleOperation.cs index c116146c..8edfc97b 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSLoadBundleOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSLoadBundleOperation.cs @@ -72,8 +72,5 @@ namespace YooAsset } } } - public override void AbortDownloadOperation() - { - } } } \ No newline at end of file diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSLoadPackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSLoadPackageManifestOperation.cs index 7afef5ca..02f838fd 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSLoadPackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSLoadPackageManifestOperation.cs @@ -37,9 +37,11 @@ namespace YooAsset if (_loadEditorPackageHashOpe == null) { _loadEditorPackageHashOpe = new LoadEditorPackageHashOperation(_fileSystem, _packageVersion); - OperationSystem.StartOperation(_fileSystem.PackageName, _loadEditorPackageHashOpe); + _loadEditorPackageHashOpe.StartOperation(); + AddChildOperation(_loadEditorPackageHashOpe); } + _loadEditorPackageHashOpe.UpdateOperation(); if (_loadEditorPackageHashOpe.IsDone == false) return; @@ -61,9 +63,11 @@ namespace YooAsset { string packageHash = _loadEditorPackageHashOpe.PackageHash; _loadEditorPackageManifestOp = new LoadEditorPackageManifestOperation(_fileSystem, _packageVersion, packageHash); - OperationSystem.StartOperation(_fileSystem.PackageName, _loadEditorPackageManifestOp); + _loadEditorPackageManifestOp.StartOperation(); + AddChildOperation(_loadEditorPackageManifestOp); } + _loadEditorPackageManifestOp.UpdateOperation(); Progress = _loadEditorPackageManifestOp.Progress; if (_loadEditorPackageManifestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSRequestPackageVersionOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSRequestPackageVersionOperation.cs index 45166057..ac34873a 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSRequestPackageVersionOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSRequestPackageVersionOperation.cs @@ -33,9 +33,11 @@ namespace YooAsset if (_loadEditorPackageVersionOp == null) { _loadEditorPackageVersionOp = new LoadEditorPackageVersionOperation(_fileSystem); - OperationSystem.StartOperation(_fileSystem.PackageName, _loadEditorPackageVersionOp); + _loadEditorPackageVersionOp.StartOperation(); + AddChildOperation(_loadEditorPackageVersionOp); } + _loadEditorPackageVersionOp.UpdateOperation(); if (_loadEditorPackageVersionOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/internal/LoadEditorPackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/internal/LoadEditorPackageManifestOperation.cs index c7793a63..ce14da45 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/internal/LoadEditorPackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/internal/LoadEditorPackageManifestOperation.cs @@ -77,9 +77,11 @@ namespace YooAsset if (_deserializer == null) { _deserializer = new DeserializeManifestOperation(_fileData); - OperationSystem.StartOperation(_fileSystem.PackageName, _deserializer); + _deserializer.StartOperation(); + AddChildOperation(_deserializer); } + _deserializer.UpdateOperation(); Progress = _deserializer.Progress; if (_deserializer.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/DefaultWebRemoteFileSystem.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/DefaultWebRemoteFileSystem.cs index ffbe1f2a..dca3fbd4 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/DefaultWebRemoteFileSystem.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/DefaultWebRemoteFileSystem.cs @@ -61,25 +61,21 @@ namespace YooAsset public virtual FSInitializeFileSystemOperation InitializeFileSystemAsync() { var operation = new DWRFSInitializeOperation(this); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSLoadPackageManifestOperation LoadPackageManifestAsync(string packageVersion, int timeout) { var operation = new DWRFSLoadPackageManifestOperation(this, packageVersion, timeout); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSRequestPackageVersionOperation RequestPackageVersionAsync(bool appendTimeTicks, int timeout) { var operation = new DWRFSRequestPackageVersionOperation(this, appendTimeTicks, timeout); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSClearCacheFilesOperation ClearCacheFilesAsync(PackageManifest manifest, string clearMode, object clearParam) { var operation = new FSClearCacheFilesCompleteOperation(); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSDownloadFileOperation DownloadFileAsync(PackageBundle bundle, DownloadParam param) @@ -91,14 +87,12 @@ namespace YooAsset if (bundle.BundleType == (int)EBuildBundleType.AssetBundle) { var operation = new DWRFSLoadAssetBundleOperation(this, bundle); - OperationSystem.StartOperation(PackageName, operation); return operation; } else { string error = $"{nameof(DefaultWebRemoteFileSystem)} not support load bundle type : {bundle.BundleType}"; var operation = new FSLoadBundleCompleteOperation(error); - OperationSystem.StartOperation(PackageName, operation); return operation; } } @@ -126,7 +120,7 @@ namespace YooAsset { PackageName = packageName; } - public virtual void OnUpdate() + public virtual void OnDestroy() { } diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSLoadBundleOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSLoadBundleOperation.cs index 0bac9cc4..8327dced 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSLoadBundleOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSLoadBundleOperation.cs @@ -41,15 +41,18 @@ namespace YooAsset if (_bundle.Encrypted) { _downloadAssetBundleOp = new DownloadWebEncryptAssetBundleOperation(true, _fileSystem.DecryptionServices, _bundle, downloadParam); - OperationSystem.StartOperation(_fileSystem.PackageName, _downloadAssetBundleOp); + _downloadAssetBundleOp.StartOperation(); + AddChildOperation(_downloadAssetBundleOp); } else { _downloadAssetBundleOp = new DownloadWebNormalAssetBundleOperation(_fileSystem.DisableUnityWebCache, _bundle, downloadParam); - OperationSystem.StartOperation(_fileSystem.PackageName, _downloadAssetBundleOp); + _downloadAssetBundleOp.StartOperation(); + AddChildOperation(_downloadAssetBundleOp); } } + _downloadAssetBundleOp.UpdateOperation(); DownloadProgress = _downloadAssetBundleOp.DownloadProgress; DownloadedBytes = _downloadAssetBundleOp.DownloadedBytes; Progress = _downloadAssetBundleOp.Progress; @@ -90,13 +93,5 @@ namespace YooAsset UnityEngine.Debug.LogError(Error); } } - public override void AbortDownloadOperation() - { - if (_steps == ESteps.DownloadAssetBundle) - { - if (_downloadAssetBundleOp != null) - _downloadAssetBundleOp.SetAbort(); - } - } } } \ No newline at end of file diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSLoadPackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSLoadPackageManifestOperation.cs index 80a9b4a5..5a53eeec 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSLoadPackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSLoadPackageManifestOperation.cs @@ -39,9 +39,11 @@ namespace YooAsset if (_requestWebPackageHashOp == null) { _requestWebPackageHashOp = new RequestWebRemotePackageHashOperation(_fileSystem, _packageVersion, _timeout); - OperationSystem.StartOperation(_fileSystem.PackageName, _requestWebPackageHashOp); + _requestWebPackageHashOp.StartOperation(); + AddChildOperation(_requestWebPackageHashOp); } + _requestWebPackageHashOp.UpdateOperation(); if (_requestWebPackageHashOp.IsDone == false) return; @@ -63,9 +65,11 @@ namespace YooAsset { string packageHash = _requestWebPackageHashOp.PackageHash; _loadWebPackageManifestOp = new LoadWebRemotePackageManifestOperation(_fileSystem, _packageVersion, packageHash); - OperationSystem.StartOperation(_fileSystem.PackageName, _loadWebPackageManifestOp); + _loadWebPackageManifestOp.StartOperation(); + AddChildOperation(_loadWebPackageManifestOp); } + _loadWebPackageManifestOp.UpdateOperation(); Progress = _loadWebPackageManifestOp.Progress; if (_loadWebPackageManifestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSRequestPackageVersionOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSRequestPackageVersionOperation.cs index 76556420..77aa5187 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSRequestPackageVersionOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSRequestPackageVersionOperation.cs @@ -37,9 +37,11 @@ namespace YooAsset if (_requestWebPackageVersionOp == null) { _requestWebPackageVersionOp = new RequestWebRemotePackageVersionOperation(_fileSystem, _appendTimeTicks, _timeout); - OperationSystem.StartOperation(_fileSystem.PackageName, _requestWebPackageVersionOp); + _requestWebPackageVersionOp.StartOperation(); + AddChildOperation(_requestWebPackageVersionOp); } + _requestWebPackageVersionOp.UpdateOperation(); Progress = _requestWebPackageVersionOp.Progress; if (_requestWebPackageVersionOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/LoadWebRemotePackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/LoadWebRemotePackageManifestOperation.cs index c4755b0f..ab6ea4fc 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/LoadWebRemotePackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/LoadWebRemotePackageManifestOperation.cs @@ -49,9 +49,11 @@ namespace YooAsset string fileName = YooAssetSettingsData.GetManifestBinaryFileName(_fileSystem.PackageName, _packageVersion); string url = GetWebRequestURL(fileName); _webDataRequestOp = new UnityWebDataRequestOperation(url); - OperationSystem.StartOperation(_fileSystem.PackageName, _webDataRequestOp); + _webDataRequestOp.StartOperation(); + AddChildOperation(_webDataRequestOp); } + _webDataRequestOp.UpdateOperation(); if (_webDataRequestOp.IsDone == false) return; @@ -88,9 +90,11 @@ namespace YooAsset if (_deserializer == null) { _deserializer = new DeserializeManifestOperation(_webDataRequestOp.Result); - OperationSystem.StartOperation(_fileSystem.PackageName, _deserializer); + _deserializer.StartOperation(); + AddChildOperation(_deserializer); } + _deserializer.UpdateOperation(); Progress = _deserializer.Progress; if (_deserializer.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/RequestWebRemotePackageHashOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/RequestWebRemotePackageHashOperation.cs index a4f61216..bf98767d 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/RequestWebRemotePackageHashOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/RequestWebRemotePackageHashOperation.cs @@ -46,9 +46,11 @@ namespace YooAsset string fileName = YooAssetSettingsData.GetPackageHashFileName(_fileSystem.PackageName, _packageVersion); string url = GetWebRequestURL(fileName); _webTextRequestOp = new UnityWebTextRequestOperation(url, _timeout); - OperationSystem.StartOperation(_fileSystem.PackageName, _webTextRequestOp); + _webTextRequestOp.StartOperation(); + AddChildOperation(_webTextRequestOp); } + _webTextRequestOp.UpdateOperation(); Progress = _webTextRequestOp.Progress; if (_webTextRequestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/RequestWebRemotePackageVersionOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/RequestWebRemotePackageVersionOperation.cs index e32d0919..b65e64f5 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/RequestWebRemotePackageVersionOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/RequestWebRemotePackageVersionOperation.cs @@ -46,9 +46,11 @@ namespace YooAsset string fileName = YooAssetSettingsData.GetPackageVersionFileName(_fileSystem.PackageName); string url = GetWebRequestURL(fileName); _webTextRequestOp = new UnityWebTextRequestOperation(url, _timeout); - OperationSystem.StartOperation(_fileSystem.PackageName, _webTextRequestOp); + _webTextRequestOp.StartOperation(); + AddChildOperation(_webTextRequestOp); } + _webTextRequestOp.UpdateOperation(); Progress = _webTextRequestOp.Progress; if (_webTextRequestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/DefaultWebServerFileSystem.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/DefaultWebServerFileSystem.cs index 82e003c9..4a3cb528 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/DefaultWebServerFileSystem.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/DefaultWebServerFileSystem.cs @@ -70,25 +70,21 @@ namespace YooAsset public virtual FSInitializeFileSystemOperation InitializeFileSystemAsync() { var operation = new DWSFSInitializeOperation(this); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSLoadPackageManifestOperation LoadPackageManifestAsync(string packageVersion, int timeout) { var operation = new DWSFSLoadPackageManifestOperation(this, packageVersion, timeout); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSRequestPackageVersionOperation RequestPackageVersionAsync(bool appendTimeTicks, int timeout) { var operation = new DWSFSRequestPackageVersionOperation(this, timeout); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSClearCacheFilesOperation ClearCacheFilesAsync(PackageManifest manifest, string clearMode, object clearParam) { var operation = new FSClearCacheFilesCompleteOperation(); - OperationSystem.StartOperation(PackageName, operation); return operation; } public virtual FSDownloadFileOperation DownloadFileAsync(PackageBundle bundle, DownloadParam param) @@ -100,14 +96,12 @@ namespace YooAsset if (bundle.BundleType == (int)EBuildBundleType.AssetBundle) { var operation = new DWSFSLoadAssetBundleOperation(this, bundle); - OperationSystem.StartOperation(PackageName, operation); return operation; } else { string error = $"{nameof(DefaultWebServerFileSystem)} not support load bundle type : {bundle.BundleType}"; var operation = new FSLoadBundleCompleteOperation(error); - OperationSystem.StartOperation(PackageName, operation); return operation; } } @@ -136,7 +130,7 @@ namespace YooAsset else _webPackageRoot = packageRoot; } - public virtual void OnUpdate() + public virtual void OnDestroy() { } diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSInitializeOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSInitializeOperation.cs index 27459d6a..ae2a5dc9 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSInitializeOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSInitializeOperation.cs @@ -1,6 +1,4 @@  -using static UnityEngine.Networking.UnityWebRequest; - namespace YooAsset { internal class DWSFSInitializeOperation : FSInitializeFileSystemOperation @@ -49,9 +47,11 @@ namespace YooAsset #endif _loadCatalogFileOp = new LoadWebServerCatalogFileOperation(_fileSystem); - OperationSystem.StartOperation(_fileSystem.PackageName, _loadCatalogFileOp); + _loadCatalogFileOp.StartOperation(); + AddChildOperation(_loadCatalogFileOp); } + _loadCatalogFileOp.UpdateOperation(); if (_loadCatalogFileOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSLoadBundleOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSLoadBundleOperation.cs index c3d19e4d..dbe03643 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSLoadBundleOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSLoadBundleOperation.cs @@ -42,15 +42,18 @@ namespace YooAsset if (_bundle.Encrypted) { _downloadAssetBundleOp = new DownloadWebEncryptAssetBundleOperation(true, _fileSystem.DecryptionServices, _bundle, downloadParam); - OperationSystem.StartOperation(_fileSystem.PackageName, _downloadAssetBundleOp); + _downloadAssetBundleOp.StartOperation(); + AddChildOperation(_downloadAssetBundleOp); } else { _downloadAssetBundleOp = new DownloadWebNormalAssetBundleOperation(_fileSystem.DisableUnityWebCache, _bundle, downloadParam); - OperationSystem.StartOperation(_fileSystem.PackageName, _downloadAssetBundleOp); + _downloadAssetBundleOp.StartOperation(); + AddChildOperation(_downloadAssetBundleOp); } } + _downloadAssetBundleOp.UpdateOperation(); DownloadProgress = _downloadAssetBundleOp.DownloadProgress; DownloadedBytes = _downloadAssetBundleOp.DownloadedBytes; Progress = _downloadAssetBundleOp.Progress; @@ -91,13 +94,5 @@ namespace YooAsset UnityEngine.Debug.LogError(Error); } } - public override void AbortDownloadOperation() - { - if (_steps == ESteps.DownloadAssetBundle) - { - if (_downloadAssetBundleOp != null) - _downloadAssetBundleOp.SetAbort(); - } - } } } \ No newline at end of file diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSLoadPackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSLoadPackageManifestOperation.cs index 4673fa2a..ab5672b3 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSLoadPackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSLoadPackageManifestOperation.cs @@ -39,9 +39,11 @@ namespace YooAsset if (_requestWebPackageHashOp == null) { _requestWebPackageHashOp = new RequestWebServerPackageHashOperation(_fileSystem, _packageVersion, _timeout); - OperationSystem.StartOperation(_fileSystem.PackageName, _requestWebPackageHashOp); + _requestWebPackageHashOp.StartOperation(); + AddChildOperation(_requestWebPackageHashOp); } + _requestWebPackageHashOp.UpdateOperation(); if (_requestWebPackageHashOp.IsDone == false) return; @@ -63,9 +65,11 @@ namespace YooAsset { string packageHash = _requestWebPackageHashOp.PackageHash; _loadWebPackageManifestOp = new LoadWebServerPackageManifestOperation(_fileSystem, _packageVersion, packageHash); - OperationSystem.StartOperation(_fileSystem.PackageName, _loadWebPackageManifestOp); + _loadWebPackageManifestOp.StartOperation(); + AddChildOperation(_loadWebPackageManifestOp); } + _loadWebPackageManifestOp.UpdateOperation(); Progress = _loadWebPackageManifestOp.Progress; if (_loadWebPackageManifestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSRequestPackageVersionOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSRequestPackageVersionOperation.cs index 6124cb5d..349a3aa6 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSRequestPackageVersionOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSRequestPackageVersionOperation.cs @@ -35,9 +35,11 @@ namespace YooAsset if (_requestWebPackageVersionOp == null) { _requestWebPackageVersionOp = new RequestWebServerPackageVersionOperation(_fileSystem, _timeout); - OperationSystem.StartOperation(_fileSystem.PackageName, _requestWebPackageVersionOp); + _requestWebPackageVersionOp.StartOperation(); + AddChildOperation(_requestWebPackageVersionOp); } + _requestWebPackageVersionOp.UpdateOperation(); Progress = _requestWebPackageVersionOp.Progress; if (_requestWebPackageVersionOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/LoadWebServerPackageManifestOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/LoadWebServerPackageManifestOperation.cs index f4c984ef..8f04570f 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/LoadWebServerPackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/LoadWebServerPackageManifestOperation.cs @@ -47,9 +47,11 @@ namespace YooAsset string filePath = _fileSystem.GetWebPackageManifestFilePath(_packageVersion); string url = DownloadSystemHelper.ConvertToWWWPath(filePath); _webDataRequestOp = new UnityWebDataRequestOperation(url); - OperationSystem.StartOperation(_fileSystem.PackageName, _webDataRequestOp); + _webDataRequestOp.StartOperation(); + AddChildOperation(_webDataRequestOp); } + _webDataRequestOp.UpdateOperation(); if (_webDataRequestOp.IsDone == false) return; @@ -85,9 +87,11 @@ namespace YooAsset if (_deserializer == null) { _deserializer = new DeserializeManifestOperation(_webDataRequestOp.Result); - OperationSystem.StartOperation(_fileSystem.PackageName, _deserializer); + _deserializer.StartOperation(); + AddChildOperation(_deserializer); } + _deserializer.UpdateOperation(); Progress = _deserializer.Progress; if (_deserializer.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/RequestWebServerPackageHashOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/RequestWebServerPackageHashOperation.cs index 32d4489a..6b9fbf57 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/RequestWebServerPackageHashOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/RequestWebServerPackageHashOperation.cs @@ -44,9 +44,11 @@ namespace YooAsset string filePath = _fileSystem.GetWebPackageHashFilePath(_packageVersion); string url = DownloadSystemHelper.ConvertToWWWPath(filePath); _webTextRequestOp = new UnityWebTextRequestOperation(url, _timeout); - OperationSystem.StartOperation(_fileSystem.PackageName, _webTextRequestOp); + _webTextRequestOp.StartOperation(); + AddChildOperation(_webTextRequestOp); } + _webTextRequestOp.UpdateOperation(); Progress = _webTextRequestOp.Progress; if (_webTextRequestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/RequestWebServerPackageVersionOperation.cs b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/RequestWebServerPackageVersionOperation.cs index e21b80d0..409f6791 100644 --- a/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/RequestWebServerPackageVersionOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/RequestWebServerPackageVersionOperation.cs @@ -42,9 +42,11 @@ namespace YooAsset string filePath = _fileSystem.GetWebPackageVersionFilePath(); string url = DownloadSystemHelper.ConvertToWWWPath(filePath); _webTextRequestOp = new UnityWebTextRequestOperation(url, _timeout); - OperationSystem.StartOperation(_fileSystem.PackageName, _webTextRequestOp); + _webTextRequestOp.StartOperation(); + AddChildOperation(_webTextRequestOp); } + _webTextRequestOp.UpdateOperation(); if (_webTextRequestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/FileSystem/Interface/IFileSystem.cs b/Assets/YooAsset/Runtime/FileSystem/Interface/IFileSystem.cs index 8a46fc05..4a296f45 100644 --- a/Assets/YooAsset/Runtime/FileSystem/Interface/IFileSystem.cs +++ b/Assets/YooAsset/Runtime/FileSystem/Interface/IFileSystem.cs @@ -56,14 +56,14 @@ namespace YooAsset void SetParameter(string name, object value); /// - /// 创建缓存系统 + /// 创建文件系统 /// void OnCreate(string packageName, string packageRoot); /// - /// 更新文件系统 + /// 销毁文件系统 /// - void OnUpdate(); + void OnDestroy(); /// diff --git a/Assets/YooAsset/Runtime/FileSystem/Operation/FSLoadBundleFileOperation.cs b/Assets/YooAsset/Runtime/FileSystem/Operation/FSLoadBundleFileOperation.cs index a0753cae..dcc327d9 100644 --- a/Assets/YooAsset/Runtime/FileSystem/Operation/FSLoadBundleFileOperation.cs +++ b/Assets/YooAsset/Runtime/FileSystem/Operation/FSLoadBundleFileOperation.cs @@ -1,5 +1,4 @@ -using UnityEngine; - + namespace YooAsset { internal abstract class FSLoadBundleOperation : AsyncOperationBase @@ -18,11 +17,6 @@ namespace YooAsset /// 下载大小 /// public long DownloadedBytes { protected set; get; } = 0; - - /// - /// 终止下载任务 - /// - public abstract void AbortDownloadOperation(); } internal sealed class FSLoadBundleCompleteOperation : FSLoadBundleOperation @@ -41,8 +35,5 @@ namespace YooAsset internal override void InternalUpdate() { } - public override void AbortDownloadOperation() - { - } } } \ No newline at end of file diff --git a/Assets/YooAsset/Runtime/OperationSystem/AsyncOperationBase.cs b/Assets/YooAsset/Runtime/OperationSystem/AsyncOperationBase.cs index f3c6d34d..6456c80e 100644 --- a/Assets/YooAsset/Runtime/OperationSystem/AsyncOperationBase.cs +++ b/Assets/YooAsset/Runtime/OperationSystem/AsyncOperationBase.cs @@ -21,7 +21,7 @@ namespace YooAsset /// /// 是否已经完成 /// - internal bool IsFinish = false; + internal bool IsFinish { private set; get; } = false; /// /// 优先级 @@ -110,11 +110,32 @@ namespace YooAsset throw new System.NotImplementedException(this.GetType().Name); } + /// + /// 设置包裹名称 + /// + /// internal void SetPackageName(string packageName) { _packageName = packageName; } - internal void SetStart() + + /// + /// 添加子任务 + /// + internal void AddChildOperation(AsyncOperationBase child) + { +#if UNITY_EDITOR + if (_childs.Contains(child)) + throw new Exception($"The child node {child.GetType().Name} already exists !"); +#endif + + _childs.Add(child); + } + + /// + /// 开始异步操作 + /// + internal void StartOperation() { if (Status == EOperationStatus.None) { @@ -122,21 +143,40 @@ namespace YooAsset InternalStart(); } } - internal void SetFinish() + + /// + /// 更新异步操作 + /// + internal void UpdateOperation() { - IsFinish = true; + if (IsDone == false) + InternalUpdate(); - // 进度百分百完成 - Progress = 1f; + if (IsDone && IsFinish == false) + { + IsFinish = true; - //注意:如果完成回调内发生异常,会导致Task无限期等待 - _callback?.Invoke(this); + // 进度百分百完成 + Progress = 1f; - if (_taskCompletionSource != null) - _taskCompletionSource.TrySetResult(null); + //注意:如果完成回调内发生异常,会导致Task无限期等待 + _callback?.Invoke(this); + + if (_taskCompletionSource != null) + _taskCompletionSource.TrySetResult(null); + } } - internal void SetAbort() + + /// + /// 终止异步任务 + /// + internal void AbortOperation() { + foreach (var child in _childs) + { + child.AbortOperation(); + } + if (IsDone == false) { Status = EOperationStatus.Failed; @@ -188,20 +228,6 @@ namespace YooAsset InternalWaitForAsyncComplete(); } - /// - /// 开启子任务 - /// - internal void StartChildOperation(AsyncOperationBase child) - { -#if UNITY_EDITOR - if (_childs.Contains(child)) - throw new Exception($"The child node {child.GetType().Name} already exists !"); -#endif - - child.SetStart(); - _childs.Add(child); - } - #region 调试信息 #endregion diff --git a/Assets/YooAsset/Runtime/OperationSystem/GameAsyncOperation.cs b/Assets/YooAsset/Runtime/OperationSystem/GameAsyncOperation.cs index 7552ac25..8fe48872 100644 --- a/Assets/YooAsset/Runtime/OperationSystem/GameAsyncOperation.cs +++ b/Assets/YooAsset/Runtime/OperationSystem/GameAsyncOperation.cs @@ -53,7 +53,7 @@ namespace YooAsset /// protected void Abort() { - SetAbort(); + AbortOperation(); } } } \ No newline at end of file diff --git a/Assets/YooAsset/Runtime/OperationSystem/OperationSystem.cs b/Assets/YooAsset/Runtime/OperationSystem/OperationSystem.cs index 8b217004..63433630 100644 --- a/Assets/YooAsset/Runtime/OperationSystem/OperationSystem.cs +++ b/Assets/YooAsset/Runtime/OperationSystem/OperationSystem.cs @@ -43,8 +43,6 @@ namespace YooAsset /// public static void Update() { - _frameTime = _watch.ElapsedMilliseconds; - // 添加新增的异步操作 if (_newList.Count > 0) { @@ -67,6 +65,7 @@ namespace YooAsset } // 更新进行中的异步操作 + _frameTime = _watch.ElapsedMilliseconds; for (int i = 0; i < _operations.Count; i++) { if (IsBusy) @@ -76,11 +75,7 @@ namespace YooAsset if (operation.IsFinish) continue; - if (operation.IsDone == false) - operation.InternalUpdate(); - - if (operation.IsDone) - operation.SetFinish(); + operation.UpdateOperation(); } // 移除已经完成的异步操作 @@ -114,7 +109,7 @@ namespace YooAsset { if (operation.PackageName == packageName) { - operation.SetAbort(); + operation.AbortOperation(); } } @@ -123,7 +118,7 @@ namespace YooAsset { if (operation.PackageName == packageName) { - operation.SetAbort(); + operation.AbortOperation(); } } } @@ -135,7 +130,7 @@ namespace YooAsset { _newList.Add(operation); operation.SetPackageName(packageName); - operation.SetStart(); + operation.StartOperation(); } } } \ No newline at end of file diff --git a/Assets/YooAsset/Runtime/ResourceManager/Operation/InstantiateOperation.cs b/Assets/YooAsset/Runtime/ResourceManager/Operation/InstantiateOperation.cs index 7a2a3f13..4d2ca3ce 100644 --- a/Assets/YooAsset/Runtime/ResourceManager/Operation/InstantiateOperation.cs +++ b/Assets/YooAsset/Runtime/ResourceManager/Operation/InstantiateOperation.cs @@ -162,7 +162,7 @@ namespace YooAsset _instantiateAsync.Cancel(); #endif - SetAbort(); + AbortOperation(); } /// diff --git a/Assets/YooAsset/Runtime/ResourceManager/Operation/Internal/LoadBundleFileOperation.cs b/Assets/YooAsset/Runtime/ResourceManager/Operation/Internal/LoadBundleFileOperation.cs index ceeb0718..f4b4bb0f 100644 --- a/Assets/YooAsset/Runtime/ResourceManager/Operation/Internal/LoadBundleFileOperation.cs +++ b/Assets/YooAsset/Runtime/ResourceManager/Operation/Internal/LoadBundleFileOperation.cs @@ -67,11 +67,16 @@ namespace YooAsset if (_steps == ESteps.LoadFile) { if (_loadBundleOp == null) + { _loadBundleOp = LoadBundleInfo.LoadBundleFile(); + _loadBundleOp.StartOperation(); + AddChildOperation(_loadBundleOp); + } if (IsWaitForAsyncComplete) _loadBundleOp.WaitForAsyncComplete(); + _loadBundleOp.UpdateOperation(); DownloadProgress = _loadBundleOp.DownloadProgress; DownloadedBytes = _loadBundleOp.DownloadedBytes; if (_loadBundleOp.IsDone == false) @@ -209,14 +214,5 @@ namespace YooAsset _removeList.Clear(); } } - - /// - /// 终止下载任务 - /// - public void AbortDownloadOperation() - { - if (_loadBundleOp != null) - _loadBundleOp.AbortDownloadOperation(); - } } } \ No newline at end of file diff --git a/Assets/YooAsset/Runtime/ResourceManager/Operation/UnloadAllAssetsOperation.cs b/Assets/YooAsset/Runtime/ResourceManager/Operation/UnloadAllAssetsOperation.cs index c1f318af..4a5d1dc4 100644 --- a/Assets/YooAsset/Runtime/ResourceManager/Operation/UnloadAllAssetsOperation.cs +++ b/Assets/YooAsset/Runtime/ResourceManager/Operation/UnloadAllAssetsOperation.cs @@ -86,7 +86,7 @@ namespace YooAsset // 注意:终止所有下载任务 foreach (var loader in _resManager.LoaderDic.Values) { - loader.AbortDownloadOperation(); + loader.AbortOperation(); } _steps = ESteps.CheckLoading; } diff --git a/Assets/YooAsset/Runtime/ResourceManager/Provider/AllAssetsProvider.cs b/Assets/YooAsset/Runtime/ResourceManager/Provider/AllAssetsProvider.cs index 5c4a7ba0..bc288158 100644 --- a/Assets/YooAsset/Runtime/ResourceManager/Provider/AllAssetsProvider.cs +++ b/Assets/YooAsset/Runtime/ResourceManager/Provider/AllAssetsProvider.cs @@ -13,11 +13,14 @@ namespace YooAsset if (_loadAllAssetsOp == null) { _loadAllAssetsOp = BundleResultObject.LoadAllAssetsAsync(MainAssetInfo); + _loadAllAssetsOp.StartOperation(); + AddChildOperation(_loadAllAssetsOp); } if (IsWaitForAsyncComplete) _loadAllAssetsOp.WaitForAsyncComplete(); + _loadAllAssetsOp.UpdateOperation(); Progress = _loadAllAssetsOp.Progress; if (_loadAllAssetsOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/ResourceManager/Provider/AssetProvider.cs b/Assets/YooAsset/Runtime/ResourceManager/Provider/AssetProvider.cs index 847c7470..3c96d784 100644 --- a/Assets/YooAsset/Runtime/ResourceManager/Provider/AssetProvider.cs +++ b/Assets/YooAsset/Runtime/ResourceManager/Provider/AssetProvider.cs @@ -13,11 +13,14 @@ namespace YooAsset if (_loadAssetOp == null) { _loadAssetOp = BundleResultObject.LoadAssetAsync(MainAssetInfo); + _loadAssetOp.StartOperation(); + AddChildOperation(_loadAssetOp); } if (IsWaitForAsyncComplete) _loadAssetOp.WaitForAsyncComplete(); + _loadAssetOp.UpdateOperation(); Progress = _loadAssetOp.Progress; if (_loadAssetOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/ResourceManager/Provider/ProviderOperation.cs b/Assets/YooAsset/Runtime/ResourceManager/Provider/ProviderOperation.cs index a6e4e3f3..a239f46c 100644 --- a/Assets/YooAsset/Runtime/ResourceManager/Provider/ProviderOperation.cs +++ b/Assets/YooAsset/Runtime/ResourceManager/Provider/ProviderOperation.cs @@ -10,7 +10,8 @@ namespace YooAsset protected enum ESteps { None = 0, - LoadBundleFile, + StartBundleLoader, + WaitBundleLoader, ProcessBundleResult, Done, } @@ -99,14 +100,24 @@ namespace YooAsset internal override void InternalStart() { DebugBeginRecording(); - _steps = ESteps.LoadBundleFile; + _steps = ESteps.StartBundleLoader; } internal override void InternalUpdate() { if (_steps == ESteps.None || _steps == ESteps.Done) return; - if (_steps == ESteps.LoadBundleFile) + if (_steps == ESteps.StartBundleLoader) + { + foreach (var bundleLoader in _bundleLoaders) + { + bundleLoader.StartOperation(); + AddChildOperation(bundleLoader); + } + _steps = ESteps.WaitBundleLoader; + } + + if (_steps == ESteps.WaitBundleLoader) { if (IsWaitForAsyncComplete) { @@ -116,6 +127,13 @@ namespace YooAsset } } + // 更新资源包加载器 + foreach (var bundleLoader in _bundleLoaders) + { + bundleLoader.UpdateOperation(); + } + + // 检测加载是否完成 foreach (var bundleLoader in _bundleLoaders) { if (bundleLoader.IsDone == false) @@ -128,6 +146,7 @@ namespace YooAsset } } + // 检测加载结果 BundleResultObject = _mainBundleLoader.Result; if (BundleResultObject == null) { diff --git a/Assets/YooAsset/Runtime/ResourceManager/Provider/SceneProvider.cs b/Assets/YooAsset/Runtime/ResourceManager/Provider/SceneProvider.cs index 791e05f9..0950b233 100644 --- a/Assets/YooAsset/Runtime/ResourceManager/Provider/SceneProvider.cs +++ b/Assets/YooAsset/Runtime/ResourceManager/Provider/SceneProvider.cs @@ -23,6 +23,8 @@ namespace YooAsset if (_loadSceneOp == null) { _loadSceneOp = BundleResultObject.LoadSceneOperation(MainAssetInfo, _loadParams, _suspendLoad); + _loadSceneOp.StartOperation(); + AddChildOperation(_loadSceneOp); } if (IsWaitForAsyncComplete) @@ -32,6 +34,7 @@ namespace YooAsset if (_suspendLoad == false) _loadSceneOp.UnSuspendLoad(); + _loadSceneOp.UpdateOperation(); Progress = _loadSceneOp.Progress; if (_loadSceneOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/ResourceManager/Provider/SubAssetsProvider.cs b/Assets/YooAsset/Runtime/ResourceManager/Provider/SubAssetsProvider.cs index ee44b493..8d512620 100644 --- a/Assets/YooAsset/Runtime/ResourceManager/Provider/SubAssetsProvider.cs +++ b/Assets/YooAsset/Runtime/ResourceManager/Provider/SubAssetsProvider.cs @@ -13,11 +13,14 @@ namespace YooAsset if (_loadSubAssetsOp == null) { _loadSubAssetsOp = BundleResultObject.LoadSubAssetsAsync(MainAssetInfo); + _loadSubAssetsOp.StartOperation(); + AddChildOperation(_loadSubAssetsOp); } if (IsWaitForAsyncComplete) _loadSubAssetsOp.WaitForAsyncComplete(); + _loadSubAssetsOp.UpdateOperation(); Progress = _loadSubAssetsOp.Progress; if (_loadSubAssetsOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/ResourceManager/ResourceManager.cs b/Assets/YooAsset/Runtime/ResourceManager/ResourceManager.cs index 26b0a7d3..8958ec75 100644 --- a/Assets/YooAsset/Runtime/ResourceManager/ResourceManager.cs +++ b/Assets/YooAsset/Runtime/ResourceManager/ResourceManager.cs @@ -321,7 +321,6 @@ namespace YooAsset // 新增下载需求 loaderOperation = new LoadBundleFileOperation(this, bundleInfo); - OperationSystem.StartOperation(PackageName, loaderOperation); LoaderDic.Add(bundleName, loaderOperation); return loaderOperation; } diff --git a/Assets/YooAsset/Runtime/ResourcePackage/Interface/IPlayMode.cs b/Assets/YooAsset/Runtime/ResourcePackage/Interface/IPlayMode.cs index 3ea25ab5..5535ee7a 100644 --- a/Assets/YooAsset/Runtime/ResourcePackage/Interface/IPlayMode.cs +++ b/Assets/YooAsset/Runtime/ResourcePackage/Interface/IPlayMode.cs @@ -9,9 +9,9 @@ namespace YooAsset PackageManifest ActiveManifest { set; get; } /// - /// 更新游戏模式 + /// 销毁文件系统 /// - void UpdatePlayMode(); + void DestroyFileSystem(); /// /// 向网络端请求最新的资源版本 diff --git a/Assets/YooAsset/Runtime/ResourcePackage/Operation/ClearCacheFilesOperation.cs b/Assets/YooAsset/Runtime/ResourcePackage/Operation/ClearCacheFilesOperation.cs index a36f9ad0..4b38c24b 100644 --- a/Assets/YooAsset/Runtime/ResourcePackage/Operation/ClearCacheFilesOperation.cs +++ b/Assets/YooAsset/Runtime/ResourcePackage/Operation/ClearCacheFilesOperation.cs @@ -25,7 +25,7 @@ namespace YooAsset private FSClearCacheFilesOperation _clearCacheFilesOpB; private FSClearCacheFilesOperation _clearCacheFilesOpC; private ESteps _steps = ESteps.None; - + internal ClearCacheFilesImplOperation(IPlayMode impl, IFileSystem fileSystemA, IFileSystem fileSystemB, IFileSystem fileSystemC, string clearMode, object clearParam) { _impl = impl; @@ -53,8 +53,13 @@ namespace YooAsset } if (_clearCacheFilesOpA == null) + { _clearCacheFilesOpA = _fileSystemA.ClearCacheFilesAsync(_impl.ActiveManifest, _clearMode, _clearParam); + _clearCacheFilesOpA.StartOperation(); + AddChildOperation(_clearCacheFilesOpA); + } + _clearCacheFilesOpA.UpdateOperation(); Progress = _clearCacheFilesOpA.Progress; if (_clearCacheFilesOpA.IsDone == false) return; @@ -80,8 +85,13 @@ namespace YooAsset } if (_clearCacheFilesOpB == null) + { _clearCacheFilesOpB = _fileSystemB.ClearCacheFilesAsync(_impl.ActiveManifest, _clearMode, _clearParam); + _clearCacheFilesOpB.StartOperation(); + AddChildOperation(_clearCacheFilesOpB); + } + _clearCacheFilesOpB.UpdateOperation(); Progress = _clearCacheFilesOpB.Progress; if (_clearCacheFilesOpB.IsDone == false) return; @@ -108,8 +118,13 @@ namespace YooAsset } if (_clearCacheFilesOpC == null) + { _clearCacheFilesOpC = _fileSystemC.ClearCacheFilesAsync(_impl.ActiveManifest, _clearMode, _clearParam); + _clearCacheFilesOpC.StartOperation(); + AddChildOperation(_clearCacheFilesOpC); + } + _clearCacheFilesOpC.UpdateOperation(); Progress = _clearCacheFilesOpC.Progress; if (_clearCacheFilesOpC.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/ResourcePackage/Operation/DestroyOperation.cs b/Assets/YooAsset/Runtime/ResourcePackage/Operation/DestroyOperation.cs index e1b969f2..18fd8c70 100644 --- a/Assets/YooAsset/Runtime/ResourcePackage/Operation/DestroyOperation.cs +++ b/Assets/YooAsset/Runtime/ResourcePackage/Operation/DestroyOperation.cs @@ -63,8 +63,13 @@ namespace YooAsset if (_steps == ESteps.UnloadAllAssets) { if (_unloadAllAssetsOp == null) + { _unloadAllAssetsOp = _resourcePackage.UnloadAllAssetsAsync(); + _unloadAllAssetsOp.StartOperation(); + AddChildOperation(_unloadAllAssetsOp); + } + _unloadAllAssetsOp.UpdateOperation(); if (_unloadAllAssetsOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/ResourcePackage/Operation/InitializationOperation.cs b/Assets/YooAsset/Runtime/ResourcePackage/Operation/InitializationOperation.cs index f4671218..3803716a 100644 --- a/Assets/YooAsset/Runtime/ResourcePackage/Operation/InitializationOperation.cs +++ b/Assets/YooAsset/Runtime/ResourcePackage/Operation/InitializationOperation.cs @@ -62,8 +62,13 @@ namespace YooAsset if (_steps == ESteps.InitFileSystem) { if (_initFileSystemOp == null) + { _initFileSystemOp = _impl.EditorFileSystem.InitializeFileSystemAsync(); + _initFileSystemOp.StartOperation(); + AddChildOperation(_initFileSystemOp); + } + _initFileSystemOp.UpdateOperation(); Progress = _initFileSystemOp.Progress; if (_initFileSystemOp.IsDone == false) return; @@ -99,8 +104,6 @@ namespace YooAsset private readonly OfflinePlayModeImpl _impl; private readonly OfflinePlayModeParameters _parameters; private FSInitializeFileSystemOperation _initFileSystemOp; - private FSRequestPackageVersionOperation _requestPackageVersionOp; - private FSLoadPackageManifestOperation _loadPackageManifestOp; private ESteps _steps = ESteps.None; internal OfflinePlayModeInitializationOperation(OfflinePlayModeImpl impl, OfflinePlayModeParameters parameters) @@ -142,8 +145,13 @@ namespace YooAsset if (_steps == ESteps.InitFileSystem) { if (_initFileSystemOp == null) + { _initFileSystemOp = _impl.BuildinFileSystem.InitializeFileSystemAsync(); + _initFileSystemOp.StartOperation(); + AddChildOperation(_initFileSystemOp); + } + _initFileSystemOp.UpdateOperation(); Progress = _initFileSystemOp.Progress; if (_initFileSystemOp.IsDone == false) return; @@ -221,8 +229,13 @@ namespace YooAsset if (_steps == ESteps.InitBuildinFileSystem) { if (_initBuildinFileSystemOp == null) + { _initBuildinFileSystemOp = _impl.BuildinFileSystem.InitializeFileSystemAsync(); + _initBuildinFileSystemOp.StartOperation(); + AddChildOperation(_initBuildinFileSystemOp); + } + _initBuildinFileSystemOp.UpdateOperation(); Progress = _initBuildinFileSystemOp.Progress; if (_initBuildinFileSystemOp.IsDone == false) return; @@ -264,8 +277,13 @@ namespace YooAsset if (_steps == ESteps.InitCacheFileSystem) { if (_initCacheFileSystemOp == null) + { _initCacheFileSystemOp = _impl.CacheFileSystem.InitializeFileSystemAsync(); + _initCacheFileSystemOp.StartOperation(); + AddChildOperation(_initCacheFileSystemOp); + } + _initCacheFileSystemOp.UpdateOperation(); Progress = _initCacheFileSystemOp.Progress; if (_initCacheFileSystemOp.IsDone == false) return; @@ -344,8 +362,13 @@ namespace YooAsset if (_steps == ESteps.InitWebServerFileSystem) { if (_initWebServerFileSystemOp == null) + { _initWebServerFileSystemOp = _impl.WebServerFileSystem.InitializeFileSystemAsync(); + _initWebServerFileSystemOp.StartOperation(); + AddChildOperation(_initWebServerFileSystemOp); + } + _initWebServerFileSystemOp.UpdateOperation(); Progress = _initWebServerFileSystemOp.Progress; if (_initWebServerFileSystemOp.IsDone == false) return; @@ -385,8 +408,13 @@ namespace YooAsset if (_steps == ESteps.InitWebRemoteFileSystem) { if (_initWebRemoteFileSystemOp == null) + { _initWebRemoteFileSystemOp = _impl.WebRemoteFileSystem.InitializeFileSystemAsync(); + _initWebRemoteFileSystemOp.StartOperation(); + AddChildOperation(_initWebRemoteFileSystemOp); + } + _initWebRemoteFileSystemOp.UpdateOperation(); Progress = _initWebRemoteFileSystemOp.Progress; if (_initWebRemoteFileSystemOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/ResourcePackage/Operation/PreDownloadContentOperation.cs b/Assets/YooAsset/Runtime/ResourcePackage/Operation/PreDownloadContentOperation.cs index d97ccecb..3e498bd7 100644 --- a/Assets/YooAsset/Runtime/ResourcePackage/Operation/PreDownloadContentOperation.cs +++ b/Assets/YooAsset/Runtime/ResourcePackage/Operation/PreDownloadContentOperation.cs @@ -197,8 +197,11 @@ namespace YooAsset if (_loadPackageManifestOp == null) { _loadPackageManifestOp = _impl.CacheFileSystem.LoadPackageManifestAsync(_packageVersion, _timeout); + _loadPackageManifestOp.StartOperation(); + AddChildOperation(_loadPackageManifestOp); } + _loadPackageManifestOp.UpdateOperation(); if (_loadPackageManifestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/ResourcePackage/Operation/RequestPackageVersionOperation.cs b/Assets/YooAsset/Runtime/ResourcePackage/Operation/RequestPackageVersionOperation.cs index 0b51e322..38dc778f 100644 --- a/Assets/YooAsset/Runtime/ResourcePackage/Operation/RequestPackageVersionOperation.cs +++ b/Assets/YooAsset/Runtime/ResourcePackage/Operation/RequestPackageVersionOperation.cs @@ -44,8 +44,13 @@ namespace YooAsset if (_steps == ESteps.RequestPackageVersion) { if (_requestPackageVersionOp == null) + { _requestPackageVersionOp = _fileSystem.RequestPackageVersionAsync(_appendTimeTicks, _timeout); + _requestPackageVersionOp.StartOperation(); + AddChildOperation(_requestPackageVersionOp); + } + _requestPackageVersionOp.UpdateOperation(); if (_requestPackageVersionOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/ResourcePackage/Operation/UpdatePackageManifestOperation.cs b/Assets/YooAsset/Runtime/ResourcePackage/Operation/UpdatePackageManifestOperation.cs index 6809e338..0b27eabb 100644 --- a/Assets/YooAsset/Runtime/ResourcePackage/Operation/UpdatePackageManifestOperation.cs +++ b/Assets/YooAsset/Runtime/ResourcePackage/Operation/UpdatePackageManifestOperation.cs @@ -73,8 +73,13 @@ namespace YooAsset if (_steps == ESteps.LoadPackageManifest) { if (_loadPackageManifestOp == null) + { _loadPackageManifestOp = _fileSystem.LoadPackageManifestAsync(_packageVersion, _timeout); + _loadPackageManifestOp.StartOperation(); + AddChildOperation(_loadPackageManifestOp); + } + _loadPackageManifestOp.UpdateOperation(); if (_loadPackageManifestOp.IsDone == false) return; diff --git a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateModeImpl.cs b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateModeImpl.cs index 69f1a055..24e263a7 100644 --- a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateModeImpl.cs +++ b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/EditorSimulateModeImpl.cs @@ -28,10 +28,10 @@ namespace YooAsset #region IPlayMode接口 public PackageManifest ActiveManifest { set; get; } - void IPlayMode.UpdatePlayMode() + void IPlayMode.DestroyFileSystem() { if (EditorFileSystem != null) - EditorFileSystem.OnUpdate(); + EditorFileSystem.OnDestroy(); } RequestPackageVersionOperation IPlayMode.RequestPackageVersionAsync(bool appendTimeTicks, int timeout) diff --git a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/HostPlayModeImpl.cs b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/HostPlayModeImpl.cs index 7debfd20..566c17a0 100644 --- a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/HostPlayModeImpl.cs +++ b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/HostPlayModeImpl.cs @@ -29,13 +29,12 @@ namespace YooAsset #region IPlayMode接口 public PackageManifest ActiveManifest { set; get; } - void IPlayMode.UpdatePlayMode() + void IPlayMode.DestroyFileSystem() { if (BuildinFileSystem != null) - BuildinFileSystem.OnUpdate(); - + BuildinFileSystem.OnDestroy(); if (CacheFileSystem != null) - CacheFileSystem.OnUpdate(); + CacheFileSystem.OnDestroy(); } RequestPackageVersionOperation IPlayMode.RequestPackageVersionAsync(bool appendTimeTicks, int timeout) diff --git a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/OfflinePlayModeImpl.cs b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/OfflinePlayModeImpl.cs index 93918d11..305dd929 100644 --- a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/OfflinePlayModeImpl.cs +++ b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/OfflinePlayModeImpl.cs @@ -28,10 +28,10 @@ namespace YooAsset #region IPlayMode接口 public PackageManifest ActiveManifest { set; get; } - void IPlayMode.UpdatePlayMode() + void IPlayMode.DestroyFileSystem() { if (BuildinFileSystem != null) - BuildinFileSystem.OnUpdate(); + BuildinFileSystem.OnDestroy(); } RequestPackageVersionOperation IPlayMode.RequestPackageVersionAsync(bool appendTimeTicks, int timeout) diff --git a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/WebPlayModeImpl.cs b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/WebPlayModeImpl.cs index 03a6c2c0..626c6849 100644 --- a/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/WebPlayModeImpl.cs +++ b/Assets/YooAsset/Runtime/ResourcePackage/PlayMode/WebPlayModeImpl.cs @@ -29,13 +29,13 @@ namespace YooAsset #region IPlayMode接口 public PackageManifest ActiveManifest { set; get; } - void IPlayMode.UpdatePlayMode() + void IPlayMode.DestroyFileSystem() { if (WebServerFileSystem != null) - WebServerFileSystem.OnUpdate(); + WebServerFileSystem.OnDestroy(); if (WebRemoteFileSystem != null) - WebRemoteFileSystem.OnUpdate(); + WebRemoteFileSystem.OnDestroy(); } RequestPackageVersionOperation IPlayMode.RequestPackageVersionAsync(bool appendTimeTicks, int timeout) diff --git a/Assets/YooAsset/Runtime/ResourcePackage/ResourcePackage.cs b/Assets/YooAsset/Runtime/ResourcePackage/ResourcePackage.cs index 997561a2..0271de5f 100644 --- a/Assets/YooAsset/Runtime/ResourcePackage/ResourcePackage.cs +++ b/Assets/YooAsset/Runtime/ResourcePackage/ResourcePackage.cs @@ -50,15 +50,6 @@ namespace YooAsset PackageName = packageName; } - /// - /// 更新资源包裹 - /// - internal void UpdatePackage() - { - if (_playModeImpl != null) - _playModeImpl.UpdatePlayMode(); - } - /// /// 销毁资源包裹 /// @@ -77,6 +68,10 @@ namespace YooAsset _resourceManager = null; } + // 销毁文件系统 + if (_playModeImpl != null) + _playModeImpl.DestroyFileSystem(); + _bundleQuery = null; _playModeImpl = null; } diff --git a/Assets/YooAsset/Runtime/YooAssets.cs b/Assets/YooAsset/Runtime/YooAssets.cs index cb0f5c7b..6e7c9b8b 100644 --- a/Assets/YooAsset/Runtime/YooAssets.cs +++ b/Assets/YooAsset/Runtime/YooAssets.cs @@ -60,11 +60,6 @@ namespace YooAsset if (_isInitialize) { OperationSystem.Update(); - - for (int i = 0; i < _packages.Count; i++) - { - _packages[i].UpdatePackage(); - } } }