From 6166fd24c6a8d57262c151f919ca737c9234d737 Mon Sep 17 00:00:00 2001 From: Alex-Rachel <574809918@qq.com> Date: Sat, 25 Jan 2025 13:46:17 +0800 Subject: [PATCH] yoo2.2,9 yoo2.2,9 --- .../Main/Procedure/ProcedureDownloadFile.cs | 18 +- .../Main/Procedure/ProcedureInitPackage.cs | 3 +- .../Main/Procedure/ProcedureUpdateManifest.cs | 2 +- .../Main/Procedure/ProcedureUpdateVersion.cs | 37 +- .../Inspector/ResourceModuleInspector.cs | 20 - .../Editor/ReleaseTools/ReleaseTools.cs | 1 - .../TEngine/Editor/Resource/Encryption.cs | 4 +- .../ResourceModule/IResourceManager.cs | 5 - .../ResourceManager.Services.cs | 266 +++------ .../Modules/ResourceModule/ResourceManager.cs | 44 +- .../Modules/ResourceModule/ResourceModule.cs | 22 +- .../Modules/SceneModule/ISceneModule.cs | 7 - .../Modules/SceneModule/SceneModule.cs | 10 - .../Modules/SceneModule/SceneModuleImp.cs | 28 +- UnityProject/Packages/YooAsset/CHANGELOG.md | 490 +++++++++++++++ .../AssetBundleBuilderHelper.cs | 2 +- .../AssetBundleBuilderSetting.cs | 36 +- .../AssetBundleBuilderWindow.cs | 7 +- .../AssetBundleSimulateBuilder.cs | 80 +-- .../AssetBundleBuilder/BuildBundleInfo.cs | 16 +- .../AssetBundleBuilder/BuildParameters.cs | 97 ++- .../BaseTasks/TaskCreateManifest.cs | 109 +++- .../BaseTasks/TaskCreateReport.cs | 13 +- .../BuildPipeline/BaseTasks/TaskEncryption.cs | 2 +- .../BaseTasks/TaskGetBuildMap.cs | 10 +- .../BaseTasks/TaskUpdateBundleInfo.cs | 27 - .../BuildTasks/TaskBuilding_BBP.cs | 17 +- .../BuildTasks/TaskCopyBuildinFiles_BBP.cs | 9 +- .../BuildTasks/TaskCreateManifest_BBP.cs | 2 +- .../BuildTasks/TaskCreatePackage_BBP.cs | 8 +- .../BuildTasks/TaskCreateReport_BBP.cs | 7 +- .../BuildTasks/TaskEncryption_BBP.cs | 14 +- .../BuildTasks/TaskGetBuildMap_BBP.cs | 2 +- .../BuildTasks/TaskPrepare_BBP.cs | 39 +- .../BuildTasks/TaskUpdateBundleInfo_BBP.cs | 60 +- .../BuildTasks/TaskVerifyBuildResult_BBP.cs | 19 +- .../BuiltinBuildParameters.cs | 8 +- .../BuiltinBuildPipeline.cs | 11 +- .../EditorSimulateBuildPipeline.meta} | 2 +- .../BuildTasks.meta} | 2 +- .../BuildTasks/TaskCreateManifest_ESBP.cs | 18 + .../TaskCreateManifest_ESBP.cs.meta} | 2 +- .../BuildTasks/TaskGetBuildMap_ESBP.cs | 15 + .../BuildTasks/TaskGetBuildMap_ESBP.cs.meta} | 2 +- .../BuildTasks/TaskPrepare_ESBP.cs | 17 + .../BuildTasks/TaskPrepare_ESBP.cs.meta} | 2 +- .../BuildTasks/TaskUpdateBundleInfo_ESBP.cs | 63 ++ .../TaskUpdateBundleInfo_ESBP.cs.meta} | 2 +- .../EditorSimulateBuildParameters.cs | 7 + .../EditorSimulateBuildParameters.cs.meta | 11 + .../EditorSimulateBuildPipeline.cs | 37 ++ .../EditorSimulateBuildPipeline.cs.meta | 11 + .../BuildTasks/TaskBuilding_RFBP.cs | 8 +- .../BuildTasks/TaskCopyBuildinFiles_RFBP.cs | 8 +- .../BuildTasks/TaskCreateManifest_RFBP.cs | 4 +- .../BuildTasks/TaskCreatePackage_RFBP.cs | 8 +- .../BuildTasks/TaskCreateReport_RFBP.cs | 7 +- .../BuildTasks/TaskEncryption_RFBP.cs | 13 + .../BuildTasks/TaskEncryption_RFBP.cs.meta | 11 + .../BuildTasks/TaskGetBuildMap_RFBP.cs | 2 +- .../BuildTasks/TaskPrepare_RFBP.cs | 30 +- .../BuildTasks/TaskUpdateBundleInfo_RFBP.cs | 32 +- .../RawFileBuildPipeline.cs | 12 +- .../BuildTasks/TaskBuilding_SBP.cs | 7 +- .../BuildTasks/TaskCopyBuildinFiles_SBP.cs | 9 +- .../BuildTasks/TaskCreateManifest_SBP.cs | 2 +- .../BuildTasks/TaskCreatePackage_SBP.cs | 8 +- .../BuildTasks/TaskCreateReport_SBP.cs | 7 +- .../BuildTasks/TaskEncryption_SBP.cs | 14 +- .../BuildTasks/TaskGetBuildMap_SBP.cs | 2 +- .../BuildTasks/TaskPrepare_SBP.cs | 33 +- .../BuildTasks/TaskUpdateBundleInfo_SBP.cs | 60 +- .../BuildTasks/TaskVerifyBuildResult_SBP.cs | 19 +- .../ScriptableBuildPipeline/SBPBuildTasks.cs | 7 +- .../ScriptableBuildPipeline.cs | 11 +- .../BuildSystem/ErrorCode.cs | 5 +- .../Editor/AssetBundleBuilder/EBuildMode.cs | 29 - .../AssetBundleBuilder/EBuildPipeline.cs | 5 + .../AssetBundleBuilder/IBuildPipeline.cs | 2 +- .../VisualViewers/BuildPipelineViewerBase.cs | 58 +- .../BuildPipelineViewerBase.uxml | 3 +- .../BuiltinBuildPipelineViewer.cs | 19 +- .../EditorSimulateBuildpipelineViewer.cs | 70 +++ .../EditorSimulateBuildpipelineViewer.cs.meta | 11 + .../RawfileBuildpipelineViewer.cs | 15 +- .../ScriptableBuildPipelineViewer.cs | 17 +- .../AssetBundleCollector.cs | 18 +- .../AssetBundleCollectorGroup.cs | 4 +- .../AssetBundleCollectorSetting.cs | 4 +- .../AssetBundleCollectorSettingData.cs | 13 +- .../AssetBundleCollectorWindow.cs | 18 +- .../AssetDependencyCache.cs | 48 ++ .../AssetDependencyCache.cs.meta | 11 + .../AssetDependencyDatabase.cs | 240 ++++++++ .../AssetDependencyDatabase.cs.meta | 11 + .../AssetBundleCollector/CollectCommand.cs | 27 +- .../CollectRules/IActiveRule.cs | 12 +- .../DefaultRules/DefaultActiveRule.cs | 4 +- .../DefaultRules/DefaultFilterRule.cs | 3 +- .../DefaultRules/DefaultIgnoreRule.cs | 8 + .../DefaultRules/DefaultPackRule.cs | 16 + .../VisualViewers/DebuggerAssetListViewer.cs | 4 +- .../VisualViewers/DebuggerBundleListViewer.cs | 6 +- .../AssetBundleReporterWindow.cs | 2 +- .../AssetBundleReporter/ReportSummary.cs | 17 +- .../VisualViewers/ReporterAssetListViewer.cs | 4 +- .../VisualViewers/ReporterBundleListViewer.cs | 4 +- .../VisualViewers/ReporterSummaryViewer.cs | 5 +- .../YooAsset/Editor/Common/AssetInfo.cs | 6 + .../Packages/YooAsset/Editor/EditorTools.cs | 15 + .../YooAssetEditor/CustomPackRule.cs | 50 -- .../PackageComparatorWindow.cs | 138 ----- .../PackageImporter/PackageImporterWindow.cs | 91 --- .../ShaderVariantCollector.meta | 8 - .../ShaderVariantCollectionHelper.cs | 38 -- .../ShaderVariantCollectionHelper.cs.meta | 11 - .../ShaderVariantCollectionManifest.cs | 155 ----- .../ShaderVariantCollectionManifest.cs.meta | 11 - .../ShaderVariantCollector.cs | 256 -------- .../ShaderVariantCollector.cs.meta | 11 - .../ShaderVariantCollectorSetting.cs | 29 - .../ShaderVariantCollectorSetting.cs.meta | 11 - .../ShaderVariantCollectorWindow.cs | 150 ----- .../ShaderVariantCollectorWindow.cs.meta | 11 - .../ShaderVariantCollectorWindow.uxml | 11 - .../ShaderVariantCollectorWindow.uxml.meta | 10 - .../Editor/UIElements/UIElementsTools.cs | 16 + UnityProject/Packages/YooAsset/LICENSE.md | 2 +- .../Packages/YooAsset/Runtime/AssemblyInfo.cs | 1 + .../YooAsset/Runtime/CacheSystem.meta | 8 - .../Runtime/CacheSystem/CacheFileInfo.cs | 19 - .../Runtime/CacheSystem/CacheFileInfo.cs.meta | 11 - .../Runtime/CacheSystem/CacheHelper.cs | 132 ----- .../Runtime/CacheSystem/CacheHelper.cs.meta | 11 - .../Runtime/CacheSystem/CacheManager.cs | 136 ----- .../Runtime/CacheSystem/CacheManager.cs.meta | 11 - .../Runtime/CacheSystem/EVerifyLevel.cs.meta | 11 - .../Runtime/CacheSystem/EVerifyResult.cs.meta | 11 - .../ClearAllCacheFilesOperation.cs.meta | 11 - .../ClearUnusedCacheFilesOperation.cs | 87 --- .../ClearUnusedCacheFilesOperation.cs.meta | 11 - .../GetAllCacheFileInfosOperation.cs | 99 ---- .../GetAllCacheFileInfosOperation.cs.meta | 11 - .../Internal/FindCacheFilesOperation.cs.meta | 11 - .../Internal/VerifyCacheFilesOperation.cs | 254 -------- .../Internal/VerifyTempFileOperation.cs | 141 ----- .../Operation/PackageCachingOperation.cs | 74 --- .../Operation/PackageCachingOperation.cs.meta | 11 - .../Runtime/CacheSystem/PersistentHelper.cs | 33 -- .../CacheSystem/PersistentHelper.cs.meta | 11 - .../Runtime/CacheSystem/PersistentManager.cs | 217 ------- .../CacheSystem/PersistentManager.cs.meta | 11 - .../Runtime/CacheSystem/VerifyElement.cs | 60 -- .../Runtime/CacheSystem/VerifyElement.cs.meta | 11 - .../DiagnosticSystem/DebugBundleInfo.cs | 2 +- .../Runtime/DownloadSystem/DownloadDefine.cs | 97 +++ .../DownloadSystem/DownloadDefine.cs.meta | 11 + .../Runtime/DownloadSystem/DownloadHelper.cs | 41 -- .../DownloadSystem/DownloadHelper.cs.meta | 11 - .../Runtime/DownloadSystem/DownloadManager.cs | 150 ----- .../DownloadSystem/DownloadManager.cs.meta | 11 - .../Runtime/DownloadSystem/DownloadParam.cs | 30 + .../DownloadSystem/DownloadParam.cs.meta | 11 + .../DownloadSystem/DownloadSystemHelper.cs | 83 +++ .../DownloadSystemHelper.cs.meta | 11 + .../Runtime/DownloadSystem/Downloader.meta | 8 - .../Downloader/CompletedDownloader.cs | 28 - .../Downloader/CompletedDownloader.cs.meta | 11 - .../Downloader/DownloaderBase.cs | 182 ------ .../Downloader/DownloaderBase.cs.meta | 11 - .../Downloader/FileDownloader.cs | 216 ------- .../Downloader/FileDownloader.cs.meta | 11 - .../Downloader/WebDownloader.cs | 140 ----- .../Downloader/WebDownloader.cs.meta | 11 - .../Operation.meta | 2 +- .../Operation/Internal.meta | 2 +- .../Internal/UnityWebDataRequestOperation.cs | 77 +++ .../UnityWebDataRequestOperation.cs.meta} | 0 .../Internal/UnityWebFileRequestOperation.cs | 73 +++ .../UnityWebFileRequestOperation.cs.meta} | 0 .../Internal/UnityWebRequestOperation.cs} | 117 ++-- .../UnityWebRequestOperation.cs.meta} | 0 .../Internal/UnityWebTextRequestOperation.cs | 77 +++ .../UnityWebTextRequestOperation.cs.meta | 11 + .../Runtime/DownloadSystem/Requester.meta | 8 - .../Requester/AssetBundleWebRequest.cs | 145 ----- .../Requester/AssetBundleWebRequest.cs.meta | 11 - .../Requester/FileGeneralRequest.cs | 107 ---- .../Requester/FileGeneralRequest.cs.meta | 11 - .../Requester/FileResumeRequest.cs | 150 ----- .../Requester/FileResumeRequest.cs.meta | 11 - .../DownloadSystem/Requester/IWebRequester.cs | 65 -- .../Requester/IWebRequester.cs.meta | 11 - .../DownloadSystem/ThreadSyncContext.cs | 38 -- .../DownloadSystem/ThreadSyncContext.cs.meta | 11 - .../DownloadSystem/UnityWebDataRequester.cs | 51 -- .../DownloadSystem/UnityWebFileRequester.cs | 30 - ...{RequestHelper.cs => WebRequestCounter.cs} | 2 +- ...lper.cs.meta => WebRequestCounter.cs.meta} | 0 .../FileSystem.meta} | 2 +- .../FileSystem/BundleResult.meta} | 2 +- .../BundleResult/AssetBundleResult.meta | 8 + .../AssetBundleResult/AssetBundleResult.cs | 73 +++ .../AssetBundleResult.cs.meta | 11 + .../AssetBundleResult/Operation.meta | 8 + .../AssetBundleLoadAllAssetsOperation.cs | 121 ++++ .../AssetBundleLoadAllAssetsOperation.cs.meta | 11 + .../AssetBundleLoadAssetOperation.cs | 121 ++++ .../AssetBundleLoadAssetOperation.cs.meta | 11 + .../AssetBundleLoadSceneOperation.cs | 117 ++++ .../AssetBundleLoadSceneOperation.cs.meta | 11 + .../AssetBundleLoadSubAssetsOperation.cs | 121 ++++ .../AssetBundleLoadSubAssetsOperation.cs.meta | 11 + .../FileSystem/BundleResult/BundleResult.cs | 48 ++ .../BundleResult/BundleResult.cs.meta | 11 + .../BundleResult/RawBundleResult.meta | 8 + .../RawBundleResult/Operation.meta | 8 + .../RawBundleLoadAllAssetsOperation.cs | 15 + .../RawBundleLoadAllAssetsOperation.cs.meta | 11 + .../Operation/RawBundleLoadAssetOperation.cs | 15 + .../RawBundleLoadAssetOperation.cs.meta | 11 + .../Operation/RawBundleLoadSceneOperation.cs | 18 + .../RawBundleLoadSceneOperation.cs.meta | 11 + .../RawBundleLoadSubAssetsOperation.cs | 15 + .../RawBundleLoadSubAssetsOperation.cs.meta | 11 + .../RawBundleResult/RawBundleResult.cs | 57 ++ .../RawBundleResult/RawBundleResult.cs.meta | 11 + .../BundleResult/VirtualBundleResult.meta | 8 + .../VirtualBundleResult/Operation.meta | 8 + .../VirtualBundleLoadAllAssetsOperation.cs | 122 ++++ ...irtualBundleLoadAllAssetsOperation.cs.meta | 11 + .../VirtualBundleLoadAssetOperation.cs | 101 ++++ .../VirtualBundleLoadAssetOperation.cs.meta | 11 + .../VirtualBundleLoadSceneOperation.cs | 123 ++++ .../VirtualBundleLoadSceneOperation.cs.meta | 11 + .../VirtualBundleLoadSubAssetsOperation.cs | 113 ++++ ...irtualBundleLoadSubAssetsOperation.cs.meta | 11 + .../VirtualBundleResult.cs | 57 ++ .../VirtualBundleResult.cs.meta | 11 + .../FileSystem/DefaultBuildinFileSystem.meta | 8 + .../DefaultBuildinFileCatalog.cs | 40 ++ .../DefaultBuildinFileCatalog.cs.meta | 11 + .../DefaultBuildinFileSystem.cs | 374 ++++++++++++ .../DefaultBuildinFileSystem.cs.meta | 11 + .../DefaultBuildinFileSystemBuild.cs | 135 +++++ .../DefaultBuildinFileSystemBuild.cs.meta | 11 + .../DefaultBuildinFileSystemDefine.cs | 11 + .../DefaultBuildinFileSystemDefine.cs.meta | 11 + .../DefaultBuildinFileSystem/Operation.meta | 8 + .../Operation/DBFSInitializeOperation.cs | 101 ++++ .../Operation/DBFSInitializeOperation.cs.meta | 11 + .../Operation/DBFSLoadBundleOperation.cs | 213 +++++++ .../Operation/DBFSLoadBundleOperation.cs.meta | 11 + .../DBFSLoadPackageManifestOperation.cs | 85 +++ .../DBFSLoadPackageManifestOperation.cs.meta | 11 + .../DBFSRequestPackageVersionOperation.cs | 57 ++ ...DBFSRequestPackageVersionOperation.cs.meta | 11 + .../Operation/internal.meta | 8 + .../LoadBuildinCatalogFileOperation.cs | 63 ++ .../LoadBuildinCatalogFileOperation.cs.meta | 11 + .../LoadBuildinPackageManifestOperation.cs | 110 ++++ ...oadBuildinPackageManifestOperation.cs.meta | 11 + .../RequestBuildinPackageHashOperation.cs | 75 +++ ...RequestBuildinPackageHashOperation.cs.meta | 11 + .../RequestBuildinPackageVersionOperation.cs} | 46 +- ...uestBuildinPackageVersionOperation.cs.meta | 11 + .../FileSystem/DefaultCacheFileSystem.meta | 8 + .../ApplicationFootPrint.cs | 63 ++ .../ApplicationFootPrint.cs.meta | 11 + .../DefaultCacheDownloadCenter.cs | 131 ++++ .../DefaultCacheDownloadCenter.cs.meta | 11 + .../DefaultCacheFileSystem.cs | 557 ++++++++++++++++++ .../DefaultCacheFileSystem.cs.meta | 11 + .../DefaultCacheFileSystemDefine.cs | 36 ++ .../DefaultCacheFileSystemDefine.cs.meta | 11 + .../DefaultCacheFileSystem/Elements.meta | 8 + .../Elements/RecordFileElement.cs | 19 + .../Elements/RecordFileElement.cs.meta | 11 + .../Elements/TempFileElement.cs | 22 + .../Elements/TempFileElement.cs.meta | 11 + .../Elements/VerifyFileElement.cs | 42 ++ .../Elements/VerifyFileElement.cs.meta | 11 + .../DefaultCacheFileSystem/Operation.meta | 8 + .../Operation/DCFSInitializeOperation.cs | 98 +++ .../Operation/DCFSInitializeOperation.cs.meta | 11 + .../Operation/DCFSLoadBundleOperation.cs | 347 +++++++++++ .../Operation/DCFSLoadBundleOperation.cs.meta | 11 + .../DCFSLoadPackageManifestOperation.cs | 158 +++++ .../DCFSLoadPackageManifestOperation.cs.meta | 11 + .../DCFSRequestPackageVersionOperation.cs | 62 ++ ...DCFSRequestPackageVersionOperation.cs.meta | 11 + .../Operation/internal.meta | 8 + .../ClearAllCacheBundleFilesOperation.cs} | 34 +- .../ClearAllCacheBundleFilesOperation.cs.meta | 11 + .../ClearAllCacheManifestFilesOperation.cs | 63 ++ ...learAllCacheManifestFilesOperation.cs.meta | 11 + .../ClearCacheBundleFilesByTagsOperaiton.cs | 120 ++++ ...earCacheBundleFilesByTagsOperaiton.cs.meta | 11 + .../ClearUnusedCacheBundleFilesOperation.cs | 83 +++ ...earUnusedCacheBundleFilesOperation.cs.meta | 11 + .../ClearUnusedCacheManifestFilesOperation.cs | 70 +++ ...rUnusedCacheManifestFilesOperation.cs.meta | 11 + .../internal}/DownloadHandlerFileRange.cs | 0 .../DownloadHandlerFileRange.cs.meta | 0 .../internal/DownloadNormalFileOperation.cs | 212 +++++++ .../DownloadNormalFileOperation.cs.meta | 11 + .../internal/DownloadPackageHashOperation.cs | 91 +++ .../DownloadPackageHashOperation.cs.meta | 11 + .../DownloadPackageManifestOperation.cs | 91 +++ .../DownloadPackageManifestOperation.cs.meta | 11 + .../internal/DownloadResumeFileOperation.cs | 257 ++++++++ .../DownloadResumeFileOperation.cs.meta | 11 + .../LoadCachePackageHashOperation.cs} | 18 +- .../LoadCachePackageHashOperation.cs.meta | 11 + .../LoadCachePackageManifestOperation.cs | 102 ++++ .../LoadCachePackageManifestOperation.cs.meta | 11 + .../RequestRemotePackageVersionOperation.cs | 98 +++ ...questRemotePackageVersionOperation.cs.meta | 11 + .../internal/SearchCacheFilesOperation.cs} | 53 +- .../SearchCacheFilesOperation.cs.meta | 11 + .../internal/VerifyCacheFilesOperation.cs | 173 ++++++ .../VerifyCacheFilesOperation.cs.meta | 2 +- .../internal/VerifyTempFileOperation.cs | 88 +++ .../internal}/VerifyTempFileOperation.cs.meta | 2 +- .../FileSystem/DefaultEditorFileSystem.meta | 8 + .../DefaultEditorFileSystem.cs | 200 +++++++ .../DefaultEditorFileSystem.cs.meta | 11 + .../DefaultEditorFileSystemDefine.cs | 7 + .../DefaultEditorFileSystemDefine.cs.meta | 11 + .../DefaultEditorFileSystem/Operation.meta | 8 + .../Operation/DEFSInitializeOperation.cs | 20 + .../Operation/DEFSInitializeOperation.cs.meta | 11 + .../Operation/DEFSLoadBundleOperation.cs | 79 +++ .../Operation/DEFSLoadBundleOperation.cs.meta | 11 + .../DEFSLoadPackageManifestOperation.cs | 86 +++ .../DEFSLoadPackageManifestOperation.cs.meta | 11 + .../DEFSRequestPackageVersionOperation.cs | 57 ++ ...DEFSRequestPackageVersionOperation.cs.meta | 11 + .../Operation/internal.meta | 8 + .../LoadEditorPackageHashOperation.cs | 56 ++ .../LoadEditorPackageHashOperation.cs.meta | 11 + .../LoadEditorPackageManifestOperation.cs | 102 ++++ ...LoadEditorPackageManifestOperation.cs.meta | 11 + .../LoadEditorPackageVersionOperation.cs | 54 ++ .../LoadEditorPackageVersionOperation.cs.meta | 11 + .../FileSystem/DefaultUnpackFileSystem.meta | 8 + .../DefaultUnpackFileSystem.cs | 21 + .../DefaultUnpackFileSystem.cs.meta | 11 + .../DefaultUnpackFileSystemDefine.cs | 21 + .../DefaultUnpackFileSystemDefine.cs.meta | 11 + .../DefaultUnpackRemoteServices.cs | 34 ++ .../DefaultUnpackRemoteServices.cs.meta | 11 + .../DefaultWebRemoteFileSystem.meta | 8 + .../DefaultWebRemoteFileSystem.cs | 161 +++++ .../DefaultWebRemoteFileSystem.cs.meta | 11 + .../DefaultWebRemoteFileSystem/Operation.meta | 8 + .../Operation/DWRFSInitializeOperation.cs | 20 + .../DWRFSInitializeOperation.cs.meta | 11 + .../Operation/DWRFSLoadBundleOperation.cs | 95 +++ .../DWRFSLoadBundleOperation.cs.meta | 11 + .../DWRFSLoadPackageManifestOperation.cs | 88 +++ .../DWRFSLoadPackageManifestOperation.cs.meta | 11 + .../DWRFSRequestPackageVersionOperation.cs | 62 ++ ...WRFSRequestPackageVersionOperation.cs.meta | 11 + .../Operation/internal.meta | 8 + .../LoadWebRemotePackageManifestOperation.cs | 122 ++++ ...dWebRemotePackageManifestOperation.cs.meta | 11 + .../RequestWebRemotePackageHashOperation.cs | 90 +++ ...questWebRemotePackageHashOperation.cs.meta | 11 + ...RequestWebRemotePackageVersionOperation.cs | 98 +++ ...stWebRemotePackageVersionOperation.cs.meta | 11 + .../DefaultWebServerFileSystem.meta | 8 + .../DefaultWebServerFileSystem.cs | 220 +++++++ .../DefaultWebServerFileSystem.cs.meta | 11 + .../DefaultWebServerFileSystem/Operation.meta | 8 + .../Operation/DWSFSInitializeOperation.cs | 64 ++ .../DWSFSInitializeOperation.cs.meta | 11 + .../Operation/DWSFSLoadBundleOperation.cs | 94 +++ .../DWSFSLoadBundleOperation.cs.meta | 11 + .../DWSFSLoadPackageManifestOperation.cs | 88 +++ .../DWSFSLoadPackageManifestOperation.cs.meta | 11 + .../DWSFSRequestPackageVersionOperation.cs | 60 ++ ...WSFSRequestPackageVersionOperation.cs.meta | 11 + .../Operation/internal.meta | 8 + .../LoadWebServerCatalogFileOperation.cs | 72 +++ .../LoadWebServerCatalogFileOperation.cs.meta | 11 + .../LoadWebServerPackageManifestOperation.cs | 110 ++++ ...dWebServerPackageManifestOperation.cs.meta | 11 + .../RequestWebServerPackageHashOperation.cs | 78 +++ ...questWebServerPackageHashOperation.cs.meta | 11 + ...RequestWebServerPackageVersionOperation.cs | 75 +++ ...stWebServerPackageVersionOperation.cs.meta | 11 + .../Runtime/FileSystem/EFileClearMode.cs | 36 ++ .../Runtime/FileSystem/EFileClearMode.cs.meta | 11 + .../EFileVerifyLevel.cs} | 10 +- .../FileSystem/EFileVerifyLevel.cs.meta | 11 + .../EFileVerifyResult.cs} | 4 +- .../FileSystem/EFileVerifyResult.cs.meta | 11 + .../FileSystem/FileSystemParameters.cs | 136 +++++ .../FileSystem/FileSystemParameters.cs.meta | 11 + .../FileSystem/FileSystemParametersDefine.cs | 19 + .../FileSystemParametersDefine.cs.meta | 11 + .../Runtime/FileSystem/FileVerifyHelper.cs | 45 ++ .../FileSystem/FileVerifyHelper.cs.meta | 11 + .../Runtime/FileSystem/Interface.meta | 8 + .../FileSystem/Interface/IFileSystem.cs | 110 ++++ .../FileSystem/Interface/IFileSystem.cs.meta | 11 + .../Runtime/FileSystem/Operation.meta | 8 + .../Operation/FSClearCacheFilesOperation.cs | 36 ++ .../FSClearCacheFilesOperation.cs.meta | 11 + .../Operation/FSDownloadFileOperation.cs | 46 ++ .../Operation/FSDownloadFileOperation.cs.meta | 11 + .../FSInitializeFileSystemOperation.cs | 7 + .../FSInitializeFileSystemOperation.cs.meta | 11 + .../Operation/FSLoadAllAssetsOperation.cs | 8 + .../FSLoadAllAssetsOperation.cs.meta | 11 + .../Operation/FSLoadAssetOperation.cs | 8 + .../Operation/FSLoadAssetOperation.cs.meta | 11 + .../Operation/FSLoadBundleFileOperation.cs | 48 ++ .../FSLoadBundleFileOperation.cs.meta | 11 + .../FSLoadPackageManifestOperation.cs | 11 + .../FSLoadPackageManifestOperation.cs.meta | 11 + .../Operation/FSLoadSceneOperation.cs | 10 + .../Operation/FSLoadSceneOperation.cs.meta | 11 + .../Operation/FSLoadSubAssetsOperation.cs | 8 + .../FSLoadSubAssetsOperation.cs.meta | 11 + .../FSQueryPackageVersionOperation.cs | 11 + .../FSQueryPackageVersionOperation.cs.meta | 11 + .../FileSystem/Operation/Internal.meta | 8 + .../Internal/DefaultDownloadFileOperation.cs | 130 ++++ .../DefaultDownloadFileOperation.cs.meta | 11 + .../DownloadHandlerAssetBundleOperation.cs | 148 +++++ ...ownloadHandlerAssetBundleOperation.cs.meta | 11 + .../YooAsset/Runtime/InitializeParameters.cs | 101 +--- .../OperationSystem/AsyncOperationBase.cs | 73 ++- .../OperationSystem/GameAsyncOperation.cs | 17 + .../OperationSystem/OperationSystem.cs | 9 - .../Runtime/PakcageInvokeBuilder.meta | 8 + .../PakcageInvokeBuildParam.cs | 38 ++ .../PakcageInvokeBuildParam.cs.meta | 11 + .../PakcageInvokeBuildResult.cs | 8 + .../PakcageInvokeBuildResult.cs.meta | 11 + .../PakcageInvokeBuilder.cs | 43 ++ .../PakcageInvokeBuilder.cs.meta | 11 + .../DownloadStatus.cs | 16 +- .../DownloadStatus.cs.meta | 2 +- .../ResourceManager/Handle/AllAssetsHandle.cs | 26 +- .../ResourceManager/Handle/AssetHandle.cs | 48 +- .../ResourceManager/Handle/HandleBase.cs | 48 +- .../ResourceManager/Handle/RawFileHandle.cs | 33 +- .../ResourceManager/Handle/SceneHandle.cs | 56 +- .../ResourceManager/Handle/SubAssetsHandle.cs | 39 +- .../Runtime/ResourceManager/Loader.meta | 8 - .../Loader/AssetBundleFileLoader.cs | 294 --------- .../Loader/AssetBundleFileLoader.cs.meta | 11 - .../Loader/AssetBundleWebLoader.cs | 111 ---- .../Loader/AssetBundleWebLoader.cs.meta | 11 - .../Loader/BundleLoaderBase.cs | 181 ------ .../Loader/BundleLoaderBase.cs.meta | 11 - .../Loader/DependAssetBundles.cs | 112 ---- .../Loader/DependAssetBundles.cs.meta | 11 - .../Loader/RawBundleFileLoader.cs | 188 ------ .../Loader/RawBundleFileLoader.cs.meta | 11 - .../Loader/RawBundleWebLoader.cs | 145 ----- .../Loader/RawBundleWebLoader.cs.meta | 11 - .../Loader/VirtualBundleFileLoader.cs | 82 --- .../Loader/VirtualBundleFileLoader.cs.meta | 11 - .../Operation/InstantiateOperation.cs | 155 +++-- .../ResourceManager/Operation/Internal.meta | 8 + .../Internal/LoadBundleFileOperation.cs | 207 +++++++ .../Internal/LoadBundleFileOperation.cs.meta | 11 + .../Operation/UnloadAllAssetsOperation.cs | 94 +++ .../UnloadAllAssetsOperation.cs.meta | 11 + .../Operation/UnloadSceneOperation.cs | 41 +- .../Operation/UnloadUnusedAssetsOperation.cs | 80 +++ .../UnloadUnusedAssetsOperation.cs.meta | 11 + .../Provider/AllAssetsProvider.cs | 36 ++ .../Provider/AllAssetsProvider.cs.meta | 11 + .../ResourceManager/Provider/AssetProvider.cs | 36 ++ .../Provider/AssetProvider.cs.meta | 11 + .../Provider/BundledAllAssetsProvider.cs | 122 ---- .../Provider/BundledAllAssetsProvider.cs.meta | 11 - .../Provider/BundledAssetProvider.cs | 122 ---- .../Provider/BundledAssetProvider.cs.meta | 11 - .../Provider/BundledRawFileProvider.cs | 52 -- .../Provider/BundledRawFileProvider.cs.meta | 11 - .../Provider/BundledSceneProvider.cs | 146 ----- .../Provider/BundledSceneProvider.cs.meta | 11 - .../Provider/BundledSubAssetsProvider.cs | 122 ---- .../Provider/BundledSubAssetsProvider.cs.meta | 11 - .../Provider/CompletedProvider.cs | 21 +- .../Provider/DatabaseAllAssetsProvider.cs | 111 ---- .../DatabaseAllAssetsProvider.cs.meta | 11 - .../Provider/DatabaseAssetProvider.cs | 93 --- .../Provider/DatabaseAssetProvider.cs.meta | 11 - .../Provider/DatabaseRawFileProvider.cs | 68 --- .../Provider/DatabaseRawFileProvider.cs.meta | 11 - .../Provider/DatabaseSceneProvider.cs | 136 ----- .../Provider/DatabaseSceneProvider.cs.meta | 11 - .../Provider/DatabaseSubAssetsProvider.cs | 104 ---- .../DatabaseSubAssetsProvider.cs.meta | 11 - .../{ProviderBase.cs => ProviderOperation.cs} | 241 ++++---- ...Base.cs.meta => ProviderOperation.cs.meta} | 0 .../Provider/RawFileProvider.cs | 14 + .../Provider/RawFileProvider.cs.meta | 11 + .../ResourceManager/Provider/SceneProvider.cs | 58 ++ .../Provider/SceneProvider.cs.meta | 11 + .../Provider/SubAssetsProvider.cs | 36 ++ .../Provider/SubAssetsProvider.cs.meta | 11 + .../Runtime/ResourceManager/ResourceLoader.cs | 103 ---- .../ResourceManager/ResourceLoader.cs.meta | 11 - .../ResourceManager/ResourceManager.cs | 323 +++------- .../Runtime/ResourcePackage/AssetInfo.cs | 7 +- .../Runtime/ResourcePackage/BundleInfo.cs | 213 ++----- .../ResourcePackage/EBuildBundleType.cs | 26 + .../ResourcePackage/EBuildBundleType.cs.meta | 11 + .../ResourcePackage/Interface/IPlayMode.cs | 15 +- .../Runtime/ResourcePackage/ManifestTools.cs | 149 ++++- .../Operation/ClearCacheFilesOperation.cs | 131 ++++ .../ClearCacheFilesOperation.cs.meta | 11 + .../Operation/DestroyOperation.cs | 67 +++ .../Operation/DestroyOperation.cs.meta | 11 + .../Operation/DownloaderOperation.cs | 165 ++++-- .../Operation/InitializationOperation.cs | 523 +++++++--------- .../Internal/DeserializeManifestOperation.cs | 94 +-- .../Internal/DownloadManifestOperation.cs | 113 ---- .../DownloadManifestOperation.cs.meta | 11 - .../Internal/LoadBuildinManifestOperation.cs | 91 --- .../LoadBuildinManifestOperation.cs.meta | 11 - .../Internal/LoadCacheManifestOperation.cs | 141 ----- .../LoadCacheManifestOperation.cs.meta | 11 - .../Internal/LoadEditorManifestOperation.cs | 78 --- .../LoadEditorManifestOperation.cs.meta | 11 - .../Internal/LoadRemoteManifestOperation.cs | 151 ----- .../LoadRemoteManifestOperation.cs.meta | 11 - ...ueryBuildinPackageVersionOperation.cs.meta | 11 - .../QueryCachePackageHashOperation.cs.meta | 11 - .../QueryCachePackageVersionOperation.cs | 62 -- .../QueryCachePackageVersionOperation.cs.meta | 11 - .../QueryRemotePackageHashOperation.cs | 100 ---- .../QueryRemotePackageHashOperation.cs.meta | 11 - .../QueryRemotePackageVersionOperation.cs | 104 ---- ...QueryRemotePackageVersionOperation.cs.meta | 11 - .../UnpackBuildinManifestOperation.cs | 92 --- .../UnpackBuildinManifestOperation.cs.meta | 11 - .../Operation/PreDownloadContentOperation.cs | 155 ++--- .../RequestPackageVersionOperation.cs | 67 +++ ...=> RequestPackageVersionOperation.cs.meta} | 0 .../UpdatePackageManifestOperation.cs | 237 +------- .../UpdatePackageVersionOperation.cs | 165 ------ .../Runtime/ResourcePackage/PackageAsset.cs | 6 + .../Runtime/ResourcePackage/PackageBundle.cs | 41 +- .../Runtime/ResourcePackage/PackageDetail.cs | 66 +++ .../ResourcePackage/PackageDetail.cs.meta | 11 + .../ResourcePackage/PackageManifest.cs | 113 ++-- .../PlayMode/EditorSimulateModeHelper.cs | 62 +- .../PlayMode/EditorSimulateModeHelper.cs.meta | 2 +- .../PlayMode/EditorSimulateModeImpl.cs | 94 +-- .../PlayMode/HostPlayModeImpl.cs | 341 ++--------- .../PlayMode/OfflinePlayModeImpl.cs | 167 ++---- .../PlayMode/PlayModeHelper.cs | 258 ++++++++ .../PlayMode/PlayModeHelper.cs.meta | 11 + .../PlayMode/WebPlayModeImpl.cs | 269 +++------ .../Runtime/ResourcePackage/ResourceAssist.cs | 11 - .../ResourcePackage/ResourceAssist.cs.meta | 11 - .../ResourcePackage/ResourcePackage.cs | 399 +++++-------- .../Runtime/Services/IBuildinQueryServices.cs | 15 - .../Services/IBuildinQueryServices.cs.meta | 11 - .../Runtime/Services/IDecryptionServices.cs | 44 +- .../Runtime/Services/IDeliveryLoadServices.cs | 43 -- .../Services/IDeliveryLoadServices.cs.meta | 11 - .../Services/IDeliveryQueryServices.cs | 23 - .../Services/IDeliveryQueryServices.cs.meta | 11 - .../Runtime/Services/IEncryptionServices.cs | 5 +- .../Runtime/Services/IWechatQueryServices.cs | 15 - .../Services/IWechatQueryServices.cs.meta | 11 - .../Runtime/Settings/YooAssetSettings.cs | 43 +- .../Runtime/Settings/YooAssetSettingsData.cs | 140 ++++- .../YooAsset/Runtime/Utility/YooUtility.cs | 8 +- .../Packages/YooAsset/Runtime/YooAssets.cs | 72 +-- .../YooAsset/Runtime/YooAssetsDriver.cs | 7 + .../YooAsset/Runtime/YooAssetsExtension.cs | 20 +- UnityProject/Packages/YooAsset/package.json | 13 +- UnityProject/Packages/packages-lock.json | 4 +- 584 files changed, 15684 insertions(+), 11714 deletions(-) rename UnityProject/Packages/YooAsset/Editor/{Extension/YooAssetEditor/PackageComparator.meta => AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline.meta} (77%) rename UnityProject/Packages/YooAsset/Editor/{Extension/YooAssetEditor/PackageImporter.meta => AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks.meta} (77%) create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskCreateManifest_ESBP.cs rename UnityProject/Packages/YooAsset/Editor/{Extension/YooAssetEditor/CustomPackRule.cs.meta => AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskCreateManifest_ESBP.cs.meta} (83%) create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskGetBuildMap_ESBP.cs rename UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/{EBuildMode.cs.meta => BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskGetBuildMap_ESBP.cs.meta} (83%) create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskPrepare_ESBP.cs rename UnityProject/Packages/YooAsset/Editor/{Extension/YooAssetEditor/PackageComparator/PackageComparatorWindow.cs.meta => AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskPrepare_ESBP.cs.meta} (83%) create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskUpdateBundleInfo_ESBP.cs rename UnityProject/Packages/YooAsset/Editor/{Extension/YooAssetEditor/PackageImporter/PackageImporterWindow.cs.meta => AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskUpdateBundleInfo_ESBP.cs.meta} (83%) create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildParameters.cs create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildParameters.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildPipeline.cs create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildPipeline.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskEncryption_RFBP.cs create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskEncryption_RFBP.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/EBuildMode.cs create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetDependencyCache.cs create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetDependencyCache.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetDependencyDatabase.cs create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetDependencyDatabase.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/CustomPackRule.cs delete mode 100644 UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageComparator/PackageComparatorWindow.cs delete mode 100644 UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageImporter/PackageImporterWindow.cs delete mode 100644 UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector.meta delete mode 100644 UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectionHelper.cs delete mode 100644 UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectionHelper.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectionManifest.cs delete mode 100644 UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectionManifest.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollector.cs delete mode 100644 UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollector.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectorSetting.cs delete mode 100644 UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectorSetting.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectorWindow.cs delete mode 100644 UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectorWindow.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectorWindow.uxml delete mode 100644 UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectorWindow.uxml.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/CacheFileInfo.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/CacheFileInfo.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/CacheHelper.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/CacheHelper.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/CacheManager.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/CacheManager.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/EVerifyLevel.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/EVerifyResult.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/Operation/ClearAllCacheFilesOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/Operation/ClearUnusedCacheFilesOperation.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/Operation/ClearUnusedCacheFilesOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/Operation/GetAllCacheFileInfosOperation.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/Operation/GetAllCacheFileInfosOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/Operation/Internal/FindCacheFilesOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/Operation/Internal/VerifyCacheFilesOperation.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/Operation/Internal/VerifyTempFileOperation.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/Operation/PackageCachingOperation.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/Operation/PackageCachingOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/PersistentHelper.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/PersistentHelper.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/PersistentManager.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/PersistentManager.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/VerifyElement.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/CacheSystem/VerifyElement.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/DownloadDefine.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/DownloadDefine.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/DownloadHelper.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/DownloadHelper.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/DownloadManager.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/DownloadManager.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/DownloadParam.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/DownloadParam.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/DownloadSystemHelper.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/DownloadSystemHelper.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Downloader.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Downloader/CompletedDownloader.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Downloader/CompletedDownloader.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Downloader/DownloaderBase.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Downloader/DownloaderBase.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Downloader/FileDownloader.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Downloader/FileDownloader.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Downloader/WebDownloader.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Downloader/WebDownloader.cs.meta rename UnityProject/Packages/YooAsset/Runtime/{CacheSystem => DownloadSystem}/Operation.meta (77%) rename UnityProject/Packages/YooAsset/Runtime/{CacheSystem => DownloadSystem}/Operation/Internal.meta (77%) create mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Operation/Internal/UnityWebDataRequestOperation.cs rename UnityProject/Packages/YooAsset/Runtime/DownloadSystem/{UnityWebDataRequester.cs.meta => Operation/Internal/UnityWebDataRequestOperation.cs.meta} (100%) create mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Operation/Internal/UnityWebFileRequestOperation.cs rename UnityProject/Packages/YooAsset/Runtime/DownloadSystem/{UnityWebFileRequester.cs.meta => Operation/Internal/UnityWebFileRequestOperation.cs.meta} (100%) rename UnityProject/Packages/YooAsset/Runtime/DownloadSystem/{UnityWebRequesterBase.cs => Operation/Internal/UnityWebRequestOperation.cs} (50%) rename UnityProject/Packages/YooAsset/Runtime/DownloadSystem/{UnityWebRequesterBase.cs.meta => Operation/Internal/UnityWebRequestOperation.cs.meta} (100%) create mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Operation/Internal/UnityWebTextRequestOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Operation/Internal/UnityWebTextRequestOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Requester.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Requester/AssetBundleWebRequest.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Requester/AssetBundleWebRequest.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Requester/FileGeneralRequest.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Requester/FileGeneralRequest.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Requester/FileResumeRequest.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Requester/FileResumeRequest.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Requester/IWebRequester.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/Requester/IWebRequester.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/ThreadSyncContext.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/ThreadSyncContext.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/UnityWebDataRequester.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/DownloadSystem/UnityWebFileRequester.cs rename UnityProject/Packages/YooAsset/Runtime/DownloadSystem/{RequestHelper.cs => WebRequestCounter.cs} (96%) rename UnityProject/Packages/YooAsset/Runtime/DownloadSystem/{RequestHelper.cs.meta => WebRequestCounter.cs.meta} (100%) rename UnityProject/Packages/YooAsset/{Editor/Extension.meta => Runtime/FileSystem.meta} (77%) rename UnityProject/Packages/YooAsset/{Editor/Extension/YooAssetEditor.meta => Runtime/FileSystem/BundleResult.meta} (77%) create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/AssetBundleResult.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/AssetBundleResult/AssetBundleResult.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/AssetBundleResult/AssetBundleResult.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/AssetBundleResult/Operation.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/AssetBundleResult/Operation/AssetBundleLoadAllAssetsOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/AssetBundleResult/Operation/AssetBundleLoadAllAssetsOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/AssetBundleResult/Operation/AssetBundleLoadAssetOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/AssetBundleResult/Operation/AssetBundleLoadAssetOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/AssetBundleResult/Operation/AssetBundleLoadSceneOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/AssetBundleResult/Operation/AssetBundleLoadSceneOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/AssetBundleResult/Operation/AssetBundleLoadSubAssetsOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/AssetBundleResult/Operation/AssetBundleLoadSubAssetsOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/BundleResult.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/BundleResult.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/RawBundleResult.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/RawBundleResult/Operation.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/RawBundleResult/Operation/RawBundleLoadAllAssetsOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/RawBundleResult/Operation/RawBundleLoadAllAssetsOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/RawBundleResult/Operation/RawBundleLoadAssetOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/RawBundleResult/Operation/RawBundleLoadAssetOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/RawBundleResult/Operation/RawBundleLoadSceneOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/RawBundleResult/Operation/RawBundleLoadSceneOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/RawBundleResult/Operation/RawBundleLoadSubAssetsOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/RawBundleResult/Operation/RawBundleLoadSubAssetsOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/RawBundleResult/RawBundleResult.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/RawBundleResult/RawBundleResult.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/VirtualBundleResult.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/VirtualBundleResult/Operation.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/VirtualBundleResult/Operation/VirtualBundleLoadAllAssetsOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/VirtualBundleResult/Operation/VirtualBundleLoadAllAssetsOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/VirtualBundleResult/Operation/VirtualBundleLoadAssetOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/VirtualBundleResult/Operation/VirtualBundleLoadAssetOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/VirtualBundleResult/Operation/VirtualBundleLoadSceneOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/VirtualBundleResult/Operation/VirtualBundleLoadSceneOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/VirtualBundleResult/Operation/VirtualBundleLoadSubAssetsOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/VirtualBundleResult/Operation/VirtualBundleLoadSubAssetsOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/VirtualBundleResult/VirtualBundleResult.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/BundleResult/VirtualBundleResult/VirtualBundleResult.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileCatalog.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileCatalog.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystem.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystemBuild.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystemBuild.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystemDefine.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/DefaultBuildinFileSystemDefine.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSInitializeOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSInitializeOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSLoadBundleOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSLoadBundleOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSLoadPackageManifestOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSLoadPackageManifestOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSRequestPackageVersionOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/DBFSRequestPackageVersionOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/LoadBuildinCatalogFileOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/LoadBuildinCatalogFileOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/LoadBuildinPackageManifestOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/LoadBuildinPackageManifestOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/RequestBuildinPackageHashOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/RequestBuildinPackageHashOperation.cs.meta rename UnityProject/Packages/YooAsset/Runtime/{ResourcePackage/Operation/Internal/QueryBuildinPackageVersionOperation.cs => FileSystem/DefaultBuildinFileSystem/Operation/internal/RequestBuildinPackageVersionOperation.cs} (54%) create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultBuildinFileSystem/Operation/internal/RequestBuildinPackageVersionOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/ApplicationFootPrint.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/ApplicationFootPrint.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheDownloadCenter.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheDownloadCenter.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystem.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystemDefine.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/DefaultCacheFileSystemDefine.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Elements.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Elements/RecordFileElement.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Elements/RecordFileElement.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Elements/TempFileElement.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Elements/TempFileElement.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Elements/VerifyFileElement.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Elements/VerifyFileElement.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSInitializeOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSInitializeOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSLoadBundleOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSLoadBundleOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSLoadPackageManifestOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSLoadPackageManifestOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSRequestPackageVersionOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/DCFSRequestPackageVersionOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal.meta rename UnityProject/Packages/YooAsset/Runtime/{CacheSystem/Operation/ClearAllCacheFilesOperation.cs => FileSystem/DefaultCacheFileSystem/Operation/internal/ClearAllCacheBundleFilesOperation.cs} (56%) create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/ClearAllCacheBundleFilesOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/ClearAllCacheManifestFilesOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/ClearAllCacheManifestFilesOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/ClearCacheBundleFilesByTagsOperaiton.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/ClearCacheBundleFilesByTagsOperaiton.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/ClearUnusedCacheBundleFilesOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/ClearUnusedCacheBundleFilesOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/ClearUnusedCacheManifestFilesOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/ClearUnusedCacheManifestFilesOperation.cs.meta rename UnityProject/Packages/YooAsset/Runtime/{DownloadSystem/Requester => FileSystem/DefaultCacheFileSystem/Operation/internal}/DownloadHandlerFileRange.cs (100%) rename UnityProject/Packages/YooAsset/Runtime/{DownloadSystem/Requester => FileSystem/DefaultCacheFileSystem/Operation/internal}/DownloadHandlerFileRange.cs.meta (100%) create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadNormalFileOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadNormalFileOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadPackageHashOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadPackageHashOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadPackageManifestOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadPackageManifestOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadResumeFileOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadResumeFileOperation.cs.meta rename UnityProject/Packages/YooAsset/Runtime/{ResourcePackage/Operation/Internal/QueryCachePackageHashOperation.cs => FileSystem/DefaultCacheFileSystem/Operation/internal/LoadCachePackageHashOperation.cs} (70%) create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/LoadCachePackageHashOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/LoadCachePackageManifestOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/LoadCachePackageManifestOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/RequestRemotePackageVersionOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/RequestRemotePackageVersionOperation.cs.meta rename UnityProject/Packages/YooAsset/Runtime/{CacheSystem/Operation/Internal/FindCacheFilesOperation.cs => FileSystem/DefaultCacheFileSystem/Operation/internal/SearchCacheFilesOperation.cs} (60%) create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/SearchCacheFilesOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/VerifyCacheFilesOperation.cs rename UnityProject/Packages/YooAsset/Runtime/{CacheSystem/Operation/Internal => FileSystem/DefaultCacheFileSystem/Operation/internal}/VerifyCacheFilesOperation.cs.meta (83%) create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/VerifyTempFileOperation.cs rename UnityProject/Packages/YooAsset/Runtime/{CacheSystem/Operation/Internal => FileSystem/DefaultCacheFileSystem/Operation/internal}/VerifyTempFileOperation.cs.meta (83%) create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/DefaultEditorFileSystem.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/DefaultEditorFileSystem.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/DefaultEditorFileSystemDefine.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/DefaultEditorFileSystemDefine.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSInitializeOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSInitializeOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSLoadBundleOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSLoadBundleOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSLoadPackageManifestOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSLoadPackageManifestOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSRequestPackageVersionOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/DEFSRequestPackageVersionOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/internal.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/internal/LoadEditorPackageHashOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/internal/LoadEditorPackageHashOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/internal/LoadEditorPackageManifestOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/internal/LoadEditorPackageManifestOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/internal/LoadEditorPackageVersionOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultEditorFileSystem/Operation/internal/LoadEditorPackageVersionOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultUnpackFileSystem.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultUnpackFileSystem/DefaultUnpackFileSystem.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultUnpackFileSystem/DefaultUnpackFileSystem.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultUnpackFileSystem/DefaultUnpackFileSystemDefine.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultUnpackFileSystem/DefaultUnpackFileSystemDefine.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultUnpackFileSystem/DefaultUnpackRemoteServices.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultUnpackFileSystem/DefaultUnpackRemoteServices.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/DefaultWebRemoteFileSystem.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/DefaultWebRemoteFileSystem.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSInitializeOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSInitializeOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSLoadBundleOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSLoadBundleOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSLoadPackageManifestOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSLoadPackageManifestOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSRequestPackageVersionOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/DWRFSRequestPackageVersionOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/LoadWebRemotePackageManifestOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/LoadWebRemotePackageManifestOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/RequestWebRemotePackageHashOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/RequestWebRemotePackageHashOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/RequestWebRemotePackageVersionOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebRemoteFileSystem/Operation/internal/RequestWebRemotePackageVersionOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/DefaultWebServerFileSystem.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/DefaultWebServerFileSystem.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSInitializeOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSInitializeOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSLoadBundleOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSLoadBundleOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSLoadPackageManifestOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSLoadPackageManifestOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSRequestPackageVersionOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/DWSFSRequestPackageVersionOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/LoadWebServerCatalogFileOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/LoadWebServerCatalogFileOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/LoadWebServerPackageManifestOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/LoadWebServerPackageManifestOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/RequestWebServerPackageHashOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/RequestWebServerPackageHashOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/RequestWebServerPackageVersionOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultWebServerFileSystem/Operation/internal/RequestWebServerPackageVersionOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/EFileClearMode.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/EFileClearMode.cs.meta rename UnityProject/Packages/YooAsset/Runtime/{CacheSystem/EVerifyLevel.cs => FileSystem/EFileVerifyLevel.cs} (73%) create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/EFileVerifyLevel.cs.meta rename UnityProject/Packages/YooAsset/Runtime/{CacheSystem/EVerifyResult.cs => FileSystem/EFileVerifyResult.cs} (94%) create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/EFileVerifyResult.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/FileSystemParameters.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/FileSystemParameters.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/FileSystemParametersDefine.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/FileSystemParametersDefine.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/FileVerifyHelper.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/FileVerifyHelper.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Interface.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Interface/IFileSystem.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Interface/IFileSystem.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSClearCacheFilesOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSClearCacheFilesOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSDownloadFileOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSDownloadFileOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSInitializeFileSystemOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSInitializeFileSystemOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSLoadAllAssetsOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSLoadAllAssetsOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSLoadAssetOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSLoadAssetOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSLoadBundleFileOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSLoadBundleFileOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSLoadPackageManifestOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSLoadPackageManifestOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSLoadSceneOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSLoadSceneOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSLoadSubAssetsOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSLoadSubAssetsOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSQueryPackageVersionOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/FSQueryPackageVersionOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/Internal.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/Internal/DefaultDownloadFileOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/Internal/DefaultDownloadFileOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/Internal/DownloadHandlerAssetBundleOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/Operation/Internal/DownloadHandlerAssetBundleOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/PakcageInvokeBuilder.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuildParam.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuildParam.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuildResult.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuildResult.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuilder.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/PakcageInvokeBuilder/PakcageInvokeBuilder.cs.meta rename UnityProject/Packages/YooAsset/Runtime/{DownloadSystem => ResourceManager}/DownloadStatus.cs (57%) rename UnityProject/Packages/YooAsset/Runtime/{DownloadSystem => ResourceManager}/DownloadStatus.cs.meta (83%) delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Loader.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Loader/AssetBundleFileLoader.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Loader/AssetBundleFileLoader.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Loader/AssetBundleWebLoader.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Loader/AssetBundleWebLoader.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Loader/BundleLoaderBase.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Loader/BundleLoaderBase.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Loader/DependAssetBundles.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Loader/DependAssetBundles.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Loader/RawBundleFileLoader.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Loader/RawBundleFileLoader.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Loader/RawBundleWebLoader.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Loader/RawBundleWebLoader.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Loader/VirtualBundleFileLoader.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Loader/VirtualBundleFileLoader.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Operation/Internal.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Operation/Internal/LoadBundleFileOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Operation/Internal/LoadBundleFileOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Operation/UnloadAllAssetsOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Operation/UnloadAllAssetsOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Operation/UnloadUnusedAssetsOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Operation/UnloadUnusedAssetsOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/AllAssetsProvider.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/AllAssetsProvider.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/AssetProvider.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/AssetProvider.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/BundledAllAssetsProvider.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/BundledAllAssetsProvider.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/BundledAssetProvider.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/BundledAssetProvider.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/BundledRawFileProvider.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/BundledRawFileProvider.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/BundledSceneProvider.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/BundledSceneProvider.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/BundledSubAssetsProvider.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/BundledSubAssetsProvider.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/DatabaseAllAssetsProvider.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/DatabaseAllAssetsProvider.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/DatabaseAssetProvider.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/DatabaseAssetProvider.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/DatabaseRawFileProvider.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/DatabaseRawFileProvider.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/DatabaseSceneProvider.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/DatabaseSceneProvider.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/DatabaseSubAssetsProvider.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/DatabaseSubAssetsProvider.cs.meta rename UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/{ProviderBase.cs => ProviderOperation.cs} (63%) rename UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/{ProviderBase.cs.meta => ProviderOperation.cs.meta} (100%) create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/RawFileProvider.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/RawFileProvider.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/SceneProvider.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/SceneProvider.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/SubAssetsProvider.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/Provider/SubAssetsProvider.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/ResourceLoader.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourceManager/ResourceLoader.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/EBuildBundleType.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/EBuildBundleType.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/ClearCacheFilesOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/ClearCacheFilesOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/DestroyOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/DestroyOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/DownloadManifestOperation.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/DownloadManifestOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/LoadBuildinManifestOperation.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/LoadBuildinManifestOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/LoadCacheManifestOperation.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/LoadCacheManifestOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/LoadEditorManifestOperation.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/LoadEditorManifestOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/LoadRemoteManifestOperation.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/LoadRemoteManifestOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/QueryBuildinPackageVersionOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/QueryCachePackageHashOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/QueryCachePackageVersionOperation.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/QueryCachePackageVersionOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/QueryRemotePackageHashOperation.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/QueryRemotePackageHashOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/QueryRemotePackageVersionOperation.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/QueryRemotePackageVersionOperation.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/UnpackBuildinManifestOperation.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/Internal/UnpackBuildinManifestOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/RequestPackageVersionOperation.cs rename UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/{UpdatePackageVersionOperation.cs.meta => RequestPackageVersionOperation.cs.meta} (100%) delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/Operation/UpdatePackageVersionOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/PackageDetail.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/PackageDetail.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/PlayMode/PlayModeHelper.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/PlayMode/PlayModeHelper.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/ResourceAssist.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/ResourcePackage/ResourceAssist.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/Services/IBuildinQueryServices.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/Services/IBuildinQueryServices.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/Services/IDeliveryLoadServices.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/Services/IDeliveryLoadServices.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/Services/IDeliveryQueryServices.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/Services/IDeliveryQueryServices.cs.meta delete mode 100644 UnityProject/Packages/YooAsset/Runtime/Services/IWechatQueryServices.cs delete mode 100644 UnityProject/Packages/YooAsset/Runtime/Services/IWechatQueryServices.cs.meta diff --git a/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureDownloadFile.cs b/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureDownloadFile.cs index 277c1b9c..bc41203b 100644 --- a/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureDownloadFile.cs +++ b/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureDownloadFile.cs @@ -49,8 +49,8 @@ namespace GameMain var downloader = GameModule.Resource.Downloader; // 注册下载回调 - downloader.OnDownloadErrorCallback = OnDownloadErrorCallback; - downloader.OnDownloadProgressCallback = OnDownloadProgressCallback; + downloader.DownloadErrorCallback = OnDownloadErrorCallback; + downloader.DownloadUpdateCallback = OnDownloadProgressCallback; downloader.BeginDownload(); await downloader; @@ -61,23 +61,23 @@ namespace GameMain ChangeState(_procedureOwner); } - private void OnDownloadErrorCallback(string fileName, string error) + private void OnDownloadErrorCallback(DownloadErrorData downloadErrorData) { - UILoadTip.ShowMessageBox($"Failed to download file : {fileName}", MessageShowType.TwoButton, + UILoadTip.ShowMessageBox($"Failed to download file : {downloadErrorData.FileName}", MessageShowType.TwoButton, LoadStyle.StyleEnum.Style_Default, () => { ChangeState(_procedureOwner); }, UnityEngine.Application.Quit); } - private void OnDownloadProgressCallback(int totalDownloadCount, int currentDownloadCount, long totalDownloadBytes, long currentDownloadBytes) + private void OnDownloadProgressCallback(DownloadUpdateData downloadUpdateData/*int totalDownloadCount, int currentDownloadCount, long totalDownloadBytes, long currentDownloadBytes*/) { - string currentSizeMb = (currentDownloadBytes / 1048576f).ToString("f1"); - string totalSizeMb = (totalDownloadBytes / 1048576f).ToString("f1"); + string currentSizeMb = (downloadUpdateData.CurrentDownloadBytes / 1048576f).ToString("f1"); + string totalSizeMb = (downloadUpdateData.TotalDownloadBytes / 1048576f).ToString("f1"); float progressPercentage = GameModule.Resource.Downloader.Progress * 100; string speed = Utility.File.GetLengthString((int)CurrentSpeed); - string line1 = Utility.Text.Format("正在更新,已更新 {0}/{1} ({2:F2}%)", currentDownloadCount, totalDownloadCount, progressPercentage); + string line1 = Utility.Text.Format("正在更新,已更新 {0}/{1} ({2:F2}%)", downloadUpdateData.CurrentDownloadCount, downloadUpdateData.TotalDownloadCount, progressPercentage); string line2 = Utility.Text.Format("已更新大小 {0}MB/{1}MB", currentSizeMb, totalSizeMb); - string line3 = Utility.Text.Format("当前网速 {0}/s,剩余时间 {1}", speed, GetRemainingTime(totalDownloadBytes, currentDownloadBytes, CurrentSpeed)); + string line3 = Utility.Text.Format("当前网速 {0}/s,剩余时间 {1}", speed, GetRemainingTime(downloadUpdateData.TotalDownloadBytes, downloadUpdateData.CurrentDownloadBytes, CurrentSpeed)); LoadUpdateLogic.Instance.DownProgressAction?.Invoke(GameModule.Resource.Downloader.Progress); UILoadMgr.Show(UIDefine.UILoadUpdate, $"{line1}\n{line2}\n{line3}"); diff --git a/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureInitPackage.cs b/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureInitPackage.cs index ab6d2f88..1c494233 100644 --- a/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureInitPackage.cs +++ b/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureInitPackage.cs @@ -73,7 +73,8 @@ namespace GameMain else if (playMode == EPlayMode.OfflinePlayMode) { Log.Info("Package resource mode detected."); - ChangeState(procedureOwner); + // ChangeState(procedureOwner); + ChangeState(procedureOwner); } // 可更新模式。 else if (playMode == EPlayMode.HostPlayMode || diff --git a/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureUpdateManifest.cs b/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureUpdateManifest.cs index 89b053e7..121cccf9 100644 --- a/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureUpdateManifest.cs +++ b/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureUpdateManifest.cs @@ -34,7 +34,7 @@ namespace GameMain { //更新成功 //注意:保存资源版本号作为下次默认启动的版本! - operation.SavePackageVersion(); + // operation.SavePackageVersion(); if (GameModule.Resource.PlayMode == EPlayMode.WebPlayMode || GameModule.Resource.UpdatableWhilePlaying) diff --git a/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureUpdateVersion.cs b/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureUpdateVersion.cs index 12600dde..125f2439 100644 --- a/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureUpdateVersion.cs +++ b/UnityProject/Assets/GameScripts/Main/Procedure/ProcedureUpdateVersion.cs @@ -24,15 +24,20 @@ namespace GameMain UILoadMgr.Show(UIDefine.UILoadUpdate, $"更新静态版本文件..."); - //检查设备是否能够访问互联网 - if (Application.internetReachability == NetworkReachability.NotReachable) + EPlayMode playMode = GameModule.Resource.PlayMode; + + if (playMode == EPlayMode.HostPlayMode) { - Log.Warning("The device is not connected to the network"); - UILoadMgr.Show(UIDefine.UILoadUpdate, LoadText.Instance.Label_Net_UnReachable); - UILoadTip.ShowMessageBox(LoadText.Instance.Label_Net_UnReachable, MessageShowType.TwoButton, - LoadStyle.StyleEnum.Style_Retry, - GetStaticVersion().Forget, - () => { ChangeState(procedureOwner); }); + //检查设备是否能够访问互联网 + if (Application.internetReachability == NetworkReachability.NotReachable) + { + Log.Warning("The device is not connected to the network"); + UILoadMgr.Show(UIDefine.UILoadUpdate, LoadText.Instance.Label_Net_UnReachable); + UILoadTip.ShowMessageBox(LoadText.Instance.Label_Net_UnReachable, MessageShowType.TwoButton, + LoadStyle.StyleEnum.Style_Retry, + GetStaticVersion().Forget, + () => { ChangeState(procedureOwner); }); + } } UILoadMgr.Show(UIDefine.UILoadUpdate, LoadText.Instance.Label_RequestVersionIng); @@ -46,7 +51,11 @@ namespace GameMain /// private async UniTaskVoid GetStaticVersion() { - await UniTask.Delay(TimeSpan.FromSeconds(0.5f)); + EPlayMode playMode = GameModule.Resource.PlayMode; + if (playMode == EPlayMode.HostPlayMode) + { + await UniTask.Delay(TimeSpan.FromSeconds(0.5f)); + } var operation = GameModule.Resource.UpdatePackageVersionAsync(); @@ -59,7 +68,15 @@ namespace GameMain //线上最新版本operation.PackageVersion GameModule.Resource.PackageVersion = operation.PackageVersion; Log.Debug($"Updated package Version : from {GameModule.Resource.GetPackageVersion()} to {operation.PackageVersion}"); - ChangeState(_procedureOwner); + + if (playMode == EPlayMode.HostPlayMode || playMode == EPlayMode.WebPlayMode) + { + ChangeState(_procedureOwner); + } + else + { + ChangeState(_procedureOwner); + } } else { diff --git a/UnityProject/Assets/TEngine/Editor/Inspector/ResourceModuleInspector.cs b/UnityProject/Assets/TEngine/Editor/Inspector/ResourceModuleInspector.cs index abe51a2a..da798b78 100644 --- a/UnityProject/Assets/TEngine/Editor/Inspector/ResourceModuleInspector.cs +++ b/UnityProject/Assets/TEngine/Editor/Inspector/ResourceModuleInspector.cs @@ -16,16 +16,8 @@ namespace TEngine.Editor.Inspector "WebPlayMode (WebGL运行模式)" }; - private static readonly string[] _verifyLevelNames = new string[] - { - "Low (验证文件存在)", - "Middle (验证文件大小)", - "High (验证文件大小和CRC)" - }; - private SerializedProperty m_PlayMode = null; private SerializedProperty m_UpdatableWhilePlaying = null; - private SerializedProperty m_VerifyLevel = null; private SerializedProperty m_Milliseconds = null; private SerializedProperty m_ReadWritePathType = null; private SerializedProperty m_MinUnloadUnusedAssetsInterval = null; @@ -39,7 +31,6 @@ namespace TEngine.Editor.Inspector private SerializedProperty m_FailedTryAgain = null; private SerializedProperty m_PackageName = null; private int m_ResourceModeIndex = 0; - private int m_VerifyIndex = 0; private int m_PackageNameIndex = 0; private string[] m_PackageNames; @@ -56,8 +47,6 @@ namespace TEngine.Editor.Inspector if (EditorApplication.isPlaying && IsPrefabInHierarchy(t.gameObject)) { EditorGUILayout.EnumPopup("Resource Mode", t.PlayMode); - - EditorGUILayout.EnumPopup("VerifyLevel", t.VerifyLevel); } else { @@ -67,13 +56,6 @@ namespace TEngine.Editor.Inspector m_ResourceModeIndex = selectedIndex; m_PlayMode.enumValueIndex = selectedIndex; } - - int selectedVerifyIndex = EditorGUILayout.Popup("VerifyLevel", m_VerifyIndex, _verifyLevelNames); - if (selectedVerifyIndex != m_VerifyIndex) - { - m_VerifyIndex = selectedVerifyIndex; - m_VerifyLevel.enumValueIndex = selectedVerifyIndex; - } } m_ReadWritePathType.enumValueIndex = (int)(ReadWritePathType)EditorGUILayout.EnumPopup("Read-Write Path Type", t.ReadWritePathType); @@ -244,7 +226,6 @@ namespace TEngine.Editor.Inspector { m_PlayMode = serializedObject.FindProperty("playMode"); m_UpdatableWhilePlaying = serializedObject.FindProperty("m_UpdatableWhilePlaying"); - m_VerifyLevel = serializedObject.FindProperty("VerifyLevel"); m_Milliseconds = serializedObject.FindProperty("Milliseconds"); m_ReadWritePathType = serializedObject.FindProperty("m_ReadWritePathType"); m_MinUnloadUnusedAssetsInterval = serializedObject.FindProperty("m_MinUnloadUnusedAssetsInterval"); @@ -265,7 +246,6 @@ namespace TEngine.Editor.Inspector private void RefreshModes() { m_ResourceModeIndex = m_PlayMode.enumValueIndex > 0 ? m_PlayMode.enumValueIndex : 0; - m_VerifyIndex = m_VerifyLevel.enumValueIndex > 0 ? m_VerifyLevel.enumValueIndex : 0; } private void RefreshTypeNames() diff --git a/UnityProject/Assets/TEngine/Editor/ReleaseTools/ReleaseTools.cs b/UnityProject/Assets/TEngine/Editor/ReleaseTools/ReleaseTools.cs index 6a9b8d46..2d5c4b6f 100644 --- a/UnityProject/Assets/TEngine/Editor/ReleaseTools/ReleaseTools.cs +++ b/UnityProject/Assets/TEngine/Editor/ReleaseTools/ReleaseTools.cs @@ -136,7 +136,6 @@ namespace TEngine.Editor buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); buildParameters.BuildPipeline = buildPipeline.ToString(); buildParameters.BuildTarget = buildTarget; - buildParameters.BuildMode = EBuildMode.IncrementalBuild; buildParameters.PackageName = "DefaultPackage"; buildParameters.PackageVersion = packageVersion; buildParameters.VerifyBuildingResult = true; diff --git a/UnityProject/Assets/TEngine/Editor/Resource/Encryption.cs b/UnityProject/Assets/TEngine/Editor/Resource/Encryption.cs index d4e7ccae..d3e7fc5a 100644 --- a/UnityProject/Assets/TEngine/Editor/Resource/Encryption.cs +++ b/UnityProject/Assets/TEngine/Editor/Resource/Encryption.cs @@ -16,7 +16,7 @@ public class FileOffsetEncryption : IEncryptionServices } int offset = 32; - byte[] fileData = File.ReadAllBytes(fileInfo.FilePath); + byte[] fileData = File.ReadAllBytes(fileInfo.FileLoadPath); var encryptedData = new byte[fileData.Length + offset]; Buffer.BlockCopy(fileData, 0, encryptedData, offset, fileData.Length); @@ -39,7 +39,7 @@ public class FileStreamEncryption : IEncryptionServices } - var fileData = File.ReadAllBytes(fileInfo.FilePath); + var fileData = File.ReadAllBytes(fileInfo.FileLoadPath); for (int i = 0; i < fileData.Length; i++) { fileData[i] ^= BundleStream.KEY; diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/IResourceManager.cs b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/IResourceManager.cs index 25e6f2a2..e05c4f5b 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/IResourceManager.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/IResourceManager.cs @@ -26,11 +26,6 @@ namespace TEngine /// EPlayMode PlayMode { get; set; } - /// - /// 缓存系统启动时的验证级别。 - /// - EVerifyLevel VerifyLevel { get; set; } - /// /// 同时下载的最大数目。 /// diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.Services.cs b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.Services.cs index 2a046843..f1d9cee6 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.Services.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.Services.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.IO; using GameFramework.Runtime; using UnityEngine; @@ -21,41 +22,63 @@ namespace TEngine _defaultHostServer = defaultHostServer; _fallbackHostServer = fallbackHostServer; } + string IRemoteServices.GetRemoteMainURL(string fileName) { return $"{_defaultHostServer}/{fileName}"; } + string IRemoteServices.GetRemoteFallbackURL(string fileName) { return $"{_fallbackHostServer}/{fileName}"; } } - + /// /// 资源文件流加载解密类 /// - private class FileStreamDecryption : IDecryptionServices + public class FileStreamDecryption : IDecryptionServices { /// /// 同步方式获取解密的资源包对象 /// 注意:加载流对象在资源包对象释放的时候会自动释放 /// - AssetBundle IDecryptionServices.LoadAssetBundle(DecryptFileInfo fileInfo, out Stream managedStream) + DecryptResult IDecryptionServices.LoadAssetBundle(DecryptFileInfo fileInfo) { BundleStream bundleStream = new BundleStream(fileInfo.FileLoadPath, FileMode.Open, FileAccess.Read, FileShare.Read); - managedStream = bundleStream; - return AssetBundle.LoadFromStream(bundleStream, fileInfo.ConentCRC, GetManagedReadBufferSize()); + DecryptResult decryptResult = new DecryptResult(); + decryptResult.ManagedStream = bundleStream; + decryptResult.Result = AssetBundle.LoadFromStream(bundleStream, fileInfo.FileLoadCRC, GetManagedReadBufferSize()); + return decryptResult; } /// /// 异步方式获取解密的资源包对象 /// 注意:加载流对象在资源包对象释放的时候会自动释放 /// - AssetBundleCreateRequest IDecryptionServices.LoadAssetBundleAsync(DecryptFileInfo fileInfo, out Stream managedStream) + DecryptResult IDecryptionServices.LoadAssetBundleAsync(DecryptFileInfo fileInfo) { BundleStream bundleStream = new BundleStream(fileInfo.FileLoadPath, FileMode.Open, FileAccess.Read, FileShare.Read); - managedStream = bundleStream; - return AssetBundle.LoadFromStreamAsync(bundleStream, fileInfo.ConentCRC, GetManagedReadBufferSize()); + DecryptResult decryptResult = new DecryptResult(); + decryptResult.ManagedStream = bundleStream; + decryptResult.CreateRequest = AssetBundle.LoadFromStreamAsync(bundleStream, fileInfo.FileLoadCRC, GetManagedReadBufferSize()); + return decryptResult; + } + + /// + /// 获取解密的字节数据 + /// + byte[] IDecryptionServices.ReadFileData(DecryptFileInfo fileInfo) + { + throw new System.NotImplementedException(); + } + + /// + /// 获取解密的文本数据 + /// + string IDecryptionServices.ReadFileText(DecryptFileInfo fileInfo) + { + throw new System.NotImplementedException(); } private static uint GetManagedReadBufferSize() @@ -64,29 +87,68 @@ namespace TEngine } } + /// + /// 文件偏移加密方式 + /// + public class FileOffsetEncryption : IEncryptionServices + { + public EncryptResult Encrypt(EncryptFileInfo fileInfo) + { + int offset = 32; + byte[] fileData = File.ReadAllBytes(fileInfo.FileLoadPath); + var encryptedData = new byte[fileData.Length + offset]; + Buffer.BlockCopy(fileData, 0, encryptedData, offset, fileData.Length); + + EncryptResult result = new EncryptResult(); + result.Encrypted = true; + result.EncryptedData = encryptedData; + return result; + } + } + /// /// 资源文件偏移加载解密类 /// - private class FileOffsetDecryption : IDecryptionServices + public class FileOffsetDecryption : IDecryptionServices { /// /// 同步方式获取解密的资源包对象 /// 注意:加载流对象在资源包对象释放的时候会自动释放 /// - AssetBundle IDecryptionServices.LoadAssetBundle(DecryptFileInfo fileInfo, out Stream managedStream) + DecryptResult IDecryptionServices.LoadAssetBundle(DecryptFileInfo fileInfo) { - managedStream = null; - return AssetBundle.LoadFromFile(fileInfo.FileLoadPath, fileInfo.ConentCRC, GetFileOffset()); + DecryptResult decryptResult = new DecryptResult(); + decryptResult.ManagedStream = null; + decryptResult.Result = AssetBundle.LoadFromFile(fileInfo.FileLoadPath, fileInfo.FileLoadCRC, GetFileOffset()); + return decryptResult; } /// /// 异步方式获取解密的资源包对象 /// 注意:加载流对象在资源包对象释放的时候会自动释放 /// - AssetBundleCreateRequest IDecryptionServices.LoadAssetBundleAsync(DecryptFileInfo fileInfo, out Stream managedStream) + DecryptResult IDecryptionServices.LoadAssetBundleAsync(DecryptFileInfo fileInfo) { - managedStream = null; - return AssetBundle.LoadFromFileAsync(fileInfo.FileLoadPath, fileInfo.ConentCRC, GetFileOffset()); + DecryptResult decryptResult = new DecryptResult(); + decryptResult.ManagedStream = null; + decryptResult.CreateRequest = AssetBundle.LoadFromFileAsync(fileInfo.FileLoadPath, fileInfo.FileLoadCRC, GetFileOffset()); + return decryptResult; + } + + /// + /// 获取解密的字节数据 + /// + byte[] IDecryptionServices.ReadFileData(DecryptFileInfo fileInfo) + { + throw new System.NotImplementedException(); + } + + /// + /// 获取解密的文本数据 + /// + string IDecryptionServices.ReadFileText(DecryptFileInfo fileInfo) + { + throw new System.NotImplementedException(); } private static ulong GetFileOffset() @@ -122,176 +184,4 @@ namespace TEngine return index; } } - - /// - /// 资源文件查询服务类 - /// - public class GameQueryServices : IBuildinQueryServices - { - /// - /// 查询内置文件的时候,是否比对文件哈希值 - /// - public static bool CompareFileCRC = false; - - public bool Query(string packageName, string fileName, string fileCRC) - { - // 注意:fileName包含文件格式 - return StreamingAssetsHelper.FileExists(packageName, fileName, fileCRC); - } - } - - public class StreamingAssetsDefine - { - /// - /// 根目录名称(保持和YooAssets资源系统一致) - /// - public const string RootFolderName = "package"; - } - -#if UNITY_EDITOR - public sealed class StreamingAssetsHelper - { - public static void Init() - { - } - - public static bool FileExists(string packageName, string fileName, string fileCRC) - { - string filePath = Path.Combine(Application.streamingAssetsPath, StreamingAssetsDefine.RootFolderName, packageName, fileName); - if (File.Exists(filePath)) - { - if (GameQueryServices.CompareFileCRC) - { - string crc32 = YooAsset.HashUtility.FileCRC32(filePath); - return crc32 == fileCRC; - } - else - { - return true; - } - } - else - { - return false; - } - } - } -#else -public sealed class StreamingAssetsHelper -{ - private class PackageQuery - { - public readonly Dictionary Elements = new Dictionary(1000); - } - - private static bool _isInit = false; - private static readonly Dictionary _packages = new Dictionary(10); - - /// - /// 初始化 - /// - public static void Init() - { - if (_isInit == false) - { - _isInit = true; - - var manifest = Resources.Load("BuildinFileManifest"); - if (manifest != null) - { - foreach (var element in manifest.BuildinFiles) - { - if (_packages.TryGetValue(element.PackageName, out PackageQuery package) == false) - { - package = new PackageQuery(); - _packages.Add(element.PackageName, package); - } - package.Elements.Add(element.FileName, element); - } - } - } - } - - /// - /// 内置文件查询方法 - /// - public static bool FileExists(string packageName, string fileName, string fileCRC32) - { - if (_isInit == false) - Init(); - - if (_packages.TryGetValue(packageName, out PackageQuery package) == false) - return false; - - if (package.Elements.TryGetValue(fileName, out var element) == false) - return false; - - if (GameQueryServices.CompareFileCRC) - { - return element.FileCRC32 == fileCRC32; - } - else - { - return true; - } - } -} -#endif - - -#if UNITY_EDITOR - internal class PreprocessBuild : UnityEditor.Build.IPreprocessBuildWithReport - { - public int callbackOrder - { - get { return 0; } - } - - /// - /// 在构建应用程序前处理 - /// 原理:在构建APP之前,搜索StreamingAssets目录下的所有资源文件,然后将这些文件信息写入内置清单,内置清单存储在Resources文件夹下。 - /// - public void OnPreprocessBuild(UnityEditor.Build.Reporting.BuildReport report) - { - string saveFilePath = "Assets/AATemp/Resources/BuildinFileManifest.asset"; - if (File.Exists(saveFilePath)) - { - File.Delete(saveFilePath); - UnityEditor.AssetDatabase.SaveAssets(); - UnityEditor.AssetDatabase.Refresh(); - } - - string folderPath = $"{Application.dataPath}/StreamingAssets/{StreamingAssetsDefine.RootFolderName}"; - DirectoryInfo root = new DirectoryInfo(folderPath); - if (root.Exists == false) - { - Debug.LogWarning($"没有发现YooAsset内置目录 : {folderPath}"); - return; - } - - var manifest = ScriptableObject.CreateInstance(); - FileInfo[] files = root.GetFiles("*", SearchOption.AllDirectories); - foreach (var fileInfo in files) - { - if (fileInfo.Extension == ".meta") - continue; - if (fileInfo.Name.StartsWith("PackageManifest_")) - continue; - - BuildinFileManifest.Element element = new BuildinFileManifest.Element(); - element.PackageName = fileInfo.Directory.Name; - element.FileCRC32 = YooAsset.HashUtility.FileCRC32(fileInfo.FullName); - element.FileName = fileInfo.Name; - manifest.BuildinFiles.Add(element); - } - - if (Directory.Exists("Assets/AATemp/Resources") == false) - Directory.CreateDirectory("Assets/AATemp/Resources"); - UnityEditor.AssetDatabase.CreateAsset(manifest, saveFilePath); - UnityEditor.AssetDatabase.SaveAssets(); - UnityEditor.AssetDatabase.Refresh(); - Debug.Log($"一共{manifest.BuildinFiles.Count}个内置文件,内置资源清单保存成功 : {saveFilePath}"); - } - } -#endif } \ No newline at end of file diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.cs b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.cs index 6918a340..c7b1a250 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceManager.cs @@ -29,11 +29,6 @@ namespace TEngine /// public EPlayMode PlayMode { get; set; } - /// - /// 下载文件校验等级。 - /// - public EVerifyLevel VerifyLevel { get; set; } - /// /// 设置异步系统参数,每帧执行消耗的最大时间切片(单位:毫秒) /// @@ -210,9 +205,11 @@ namespace TEngine InitializationOperation initializationOperation = null; if (playMode == EPlayMode.EditorSimulateMode) { + var buildResult = EditorSimulateModeHelper.SimulateBuild(packageName); + var packageRoot = buildResult.PackageRootDirectory; var createParameters = new EditorSimulateModeParameters(); - createParameters.CacheBootVerifyLevel = VerifyLevel; - createParameters.SimulateManifestFilePath = EditorSimulateModeHelper.SimulateBuild(EDefaultBuildPipeline.BuiltinBuildPipeline, packageName); + createParameters.EditorFileSystemParameters = FileSystemParameters.CreateDefaultEditorFileSystemParameters(packageRoot); + createParameters.EditorFileSystemParameters.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES,new FileOffsetEncryption()); initializationOperation = package.InitializeAsync(createParameters); } @@ -220,8 +217,7 @@ namespace TEngine if (playMode == EPlayMode.OfflinePlayMode) { var createParameters = new OfflinePlayModeParameters(); - createParameters.CacheBootVerifyLevel = VerifyLevel; - createParameters.DecryptionServices = new FileStreamDecryption(); + createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(); initializationOperation = package.InitializeAsync(createParameters); } @@ -230,31 +226,30 @@ namespace TEngine { string defaultHostServer = HostServerURL; string fallbackHostServer = FallbackHostServerURL; + IRemoteServices remoteServices = new RemoteServices(defaultHostServer, fallbackHostServer); var createParameters = new HostPlayModeParameters(); - createParameters.CacheBootVerifyLevel = VerifyLevel; - createParameters.DecryptionServices = new FileStreamDecryption(); - createParameters.BuildinQueryServices = new GameQueryServices(); - createParameters.RemoteServices = new RemoteServices(defaultHostServer, fallbackHostServer); + createParameters.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(); + createParameters.CacheFileSystemParameters = FileSystemParameters.CreateDefaultCacheFileSystemParameters(remoteServices); initializationOperation = package.InitializeAsync(createParameters); } // WebGL运行模式 if (playMode == EPlayMode.WebPlayMode) { - string defaultHostServer = HostServerURL; - string fallbackHostServer = FallbackHostServerURL; var createParameters = new WebPlayModeParameters(); - createParameters.CacheBootVerifyLevel = VerifyLevel; - createParameters.DecryptionServices = new FileStreamDecryption(); - createParameters.BuildinQueryServices = new GameQueryServices(); - createParameters.RemoteServices = new RemoteServices(defaultHostServer, fallbackHostServer); +#if UNITY_WEBGL && WEIXINMINIGAME && !UNITY_EDITOR + string defaultHostServer = GetHostServerURL(); + string fallbackHostServer = GetHostServerURL(); + IRemoteServices remoteServices = new RemoteServices(defaultHostServer, fallbackHostServer); + createParameters.WebServerFileSystemParameters = WechatFileSystemCreater.CreateWechatFileSystemParameters(remoteServices); +#else + createParameters.WebServerFileSystemParameters = FileSystemParameters.CreateDefaultWebServerFileSystemParameters(); +#endif initializationOperation = package.InitializeAsync(createParameters); } await initializationOperation.ToUniTask(); - Log.Info($"Init resource package version : {initializationOperation?.PackageVersion}"); - return initializationOperation; } @@ -268,9 +263,6 @@ namespace TEngine m_AssetPool = null; _assetLoadingList.Clear(); _assetInfoMap.Clear(); -#if !UNITY_WEBGL - YooAssets.Destroy(); -#endif } #region Public Methods @@ -950,7 +942,7 @@ namespace TEngine { if (package is { InitializeStatus: EOperationStatus.Succeed }) { - package.UnloadUnusedAssets(); + package.UnloadUnusedAssetsAsync(); } } } @@ -966,7 +958,7 @@ namespace TEngine { if (package is { InitializeStatus: EOperationStatus.Succeed }) { - package.ForceUnloadAllAssets(); + package.UnloadAllAssetsAsync(); } } #endif diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceModule.cs b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceModule.cs index 03052dd1..c8c036e6 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceModule.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/ResourceModule/ResourceModule.cs @@ -95,11 +95,6 @@ namespace TEngine /// public bool UpdatableWhilePlaying => m_UpdatableWhilePlaying; - /// - /// 下载文件校验等级。 - /// - public EVerifyLevel VerifyLevel = EVerifyLevel.Middle; - [SerializeField] private ReadWritePathType m_ReadWritePathType = ReadWritePathType.Unspecified; /// @@ -297,7 +292,6 @@ namespace TEngine m_ResourceManager.DefaultPackageName = PackageName; m_ResourceManager.PlayMode = PlayMode; - m_ResourceManager.VerifyLevel = VerifyLevel; m_ResourceManager.Milliseconds = Milliseconds; m_ResourceManager.InstanceRoot = transform; m_ResourceManager.HostServerURL = SettingsUtils.GetResDownLoadPath(); @@ -350,29 +344,27 @@ namespace TEngine /// 超时时间。 /// 指定资源包的名称。不传使用默认资源包 /// 请求远端包裹的最新版本操作句柄。 - public UpdatePackageVersionOperation UpdatePackageVersionAsync(bool appendTimeTicks = false, int timeout = 60, + public RequestPackageVersionOperation UpdatePackageVersionAsync(bool appendTimeTicks = false, int timeout = 60, string customPackageName = "") { var package = string.IsNullOrEmpty(customPackageName) ? YooAssets.GetPackage(PackageName) : YooAssets.GetPackage(customPackageName); - return package.UpdatePackageVersionAsync(appendTimeTicks, timeout); + return package.RequestPackageVersionAsync(appendTimeTicks, timeout); } /// /// 向网络端请求并更新清单 /// /// 更新的包裹版本 - /// 更新成功后自动保存版本号,作为下次初始化的版本。 /// 超时时间(默认值:60秒) /// 指定资源包的名称。不传使用默认资源包 - public UpdatePackageManifestOperation UpdatePackageManifestAsync(string packageVersion, - bool autoSaveVersion = true, int timeout = 60, string customPackageName = "") + public UpdatePackageManifestOperation UpdatePackageManifestAsync(string packageVersion, int timeout = 60, string customPackageName = "") { var package = string.IsNullOrEmpty(customPackageName) ? YooAssets.GetPackage(PackageName) : YooAssets.GetPackage(customPackageName); - return package.UpdatePackageManifestAsync(packageVersion, autoSaveVersion, timeout); + return package.UpdatePackageManifestAsync(packageVersion, timeout); } /// @@ -404,12 +396,12 @@ namespace TEngine /// 清理包裹未使用的缓存文件。 /// /// 指定资源包的名称。不传使用默认资源包 - public ClearUnusedCacheFilesOperation ClearUnusedCacheFilesAsync(string customPackageName = "") + public ClearCacheFilesOperation ClearUnusedCacheFilesAsync(string customPackageName = "") { var package = string.IsNullOrEmpty(customPackageName) ? YooAssets.GetPackage(PackageName) : YooAssets.GetPackage(customPackageName); - return package.ClearUnusedCacheFilesAsync(); + return package.ClearCacheFilesAsync(EFileClearMode.ClearUnusedBundleFiles); } /// @@ -421,7 +413,7 @@ namespace TEngine var package = string.IsNullOrEmpty(customPackageName) ? YooAssets.GetPackage(PackageName) : YooAssets.GetPackage(customPackageName); - package.ClearPackageSandbox(); + package.ClearCacheFilesAsync(EFileClearMode.ClearAllBundleFiles); } #endregion diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/SceneModule/ISceneModule.cs b/UnityProject/Assets/TEngine/Runtime/Modules/SceneModule/ISceneModule.cs index 8191f986..a2a5ed59 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/SceneModule/ISceneModule.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/SceneModule/ISceneModule.cs @@ -43,13 +43,6 @@ namespace TEngine /// 是否操作成功。 public bool UnSuspend(string location); - /// - /// 是否为主场景。 - /// - /// 场景资源定位地址。 - /// 是否主场景。 - public bool IsMainScene(string location); - /// /// 异步卸载子场景。 /// diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/SceneModule/SceneModule.cs b/UnityProject/Assets/TEngine/Runtime/Modules/SceneModule/SceneModule.cs index 351d722d..5de6876b 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/SceneModule/SceneModule.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/SceneModule/SceneModule.cs @@ -84,16 +84,6 @@ namespace TEngine return _sceneModule.UnSuspend(location); } - /// - /// 是否为主场景。 - /// - /// 场景资源定位地址。 - /// 是否主场景。 - public bool IsMainScene(string location) - { - return _sceneModule.IsMainScene(location); - } - /// /// 异步卸载子场景。 /// diff --git a/UnityProject/Assets/TEngine/Runtime/Modules/SceneModule/SceneModuleImp.cs b/UnityProject/Assets/TEngine/Runtime/Modules/SceneModule/SceneModuleImp.cs index a02e42f5..afad202b 100644 --- a/UnityProject/Assets/TEngine/Runtime/Modules/SceneModule/SceneModuleImp.cs +++ b/UnityProject/Assets/TEngine/Runtime/Modules/SceneModule/SceneModuleImp.cs @@ -63,7 +63,7 @@ namespace TEngine Log.Warning($"Could not load subScene while already loaded. Scene: {location}"); return subScene; } - subScene = YooAssets.LoadSceneAsync(location, sceneMode, suspendLoad, (uint)priority); + subScene = YooAssets.LoadSceneAsync(location, sceneMode, LocalPhysicsMode.None,suspendLoad, (uint)priority); if (callBack != null) { @@ -88,7 +88,7 @@ namespace TEngine _currentMainSceneName = location; - _currentMainScene = YooAssets.LoadSceneAsync(location, sceneMode, suspendLoad, (uint)priority); + _currentMainScene = YooAssets.LoadSceneAsync(location, sceneMode, LocalPhysicsMode.None, suspendLoad, (uint)priority); if (callBack != null) { @@ -169,30 +169,6 @@ namespace TEngine return false; } - /// - /// 是否为主场景。 - /// - /// 场景资源定位地址。 - /// 是否主场景。 - public bool IsMainScene(string location) - { - if (_currentMainSceneName.Equals(location)) - { - if (_currentMainScene != null) - { - return _currentMainScene.IsMainScene(); - } - return true; - } - _subScenes.TryGetValue(location, out SceneHandle subScene); - if (subScene != null) - { - return subScene.IsMainScene(); - } - Log.Warning($"IsMainScene invalid location:{location}"); - return false; - } - /// /// 异步卸载子场景。 /// diff --git a/UnityProject/Packages/YooAsset/CHANGELOG.md b/UnityProject/Packages/YooAsset/CHANGELOG.md index c6cd07e8..c4c07656 100644 --- a/UnityProject/Packages/YooAsset/CHANGELOG.md +++ b/UnityProject/Packages/YooAsset/CHANGELOG.md @@ -2,6 +2,496 @@ All notable changes to this package will be documented in this file. +## [2.2.9] - 2025-01-14 + +### Fixed + +- (#438) 修复了纯血鸿蒙加载本地文件失败的问题。 +- (#445) 修复了小游戏扩展文件系统脚本编译错误。 + +### Changed + +- EditorSimulateModeHelper.SimulateBuild()方法变更 + + ```csharp + public static PackageInvokeBuildResult SimulateBuild(string packageName); + ``` + +## [2.2.8-preview] - 2025-01-03 + +新增了单元测试用例。 + +### Improvements + +- EditorSimulateModeHelper.SimulateBuild()方法提供指定自定义构建类 + + ```csharp + public class EditorSimulateBuildParam + { + /// + /// 模拟构建类所属程序集名称 + /// + public string InvokeAssmeblyName = "YooAsset.Editor"; + + /// + /// 模拟构建执行的类名全称 + /// 注意:类名必须包含命名空间! + /// + public string InvokeClassFullName = "YooAsset.Editor.AssetBundleSimulateBuilder"; + + /// + /// 模拟构建执行的方法名称 + /// 注意:执行方法必须满足 BindingFlags.Public | BindingFlags.Static + /// + public string InvokeMethodName = "SimulateBuild"; + } + ``` + +- 文件清理方式新增清理缓存清单。 + + ```csharp + /// + /// 文件清理方式 + /// + public enum EFileClearMode + { + /// + /// 清理所有清单 + /// + ClearAllManifestFiles, + + /// + /// 清理未在使用的清单 + /// + ClearUnusedManifestFiles, + } + ``` + +### Fixed + +- (#426) 修复了鸿蒙next平台加载内置文件路径报错的问题。 +- (#428) 修复了鸿蒙next平台加载内置文件路径报错的问题。 +- (#434) 修复了2.2版本 catalog文件对Json格式原生文件不记录的问题。 +- (#435) 修复了WebGL平台调用MD5算法触发异常的问题。 + +### Added + +- 新增了视频打包规则。 + + ```csharp + /// + /// 打包视频文件 + /// + [DisplayName("打包视频文件")] + public class PackVideoFile : IPackRule + ``` + +### Changed + +- 重命名FileSystemParameters.RootDirectory字段为PackageRoot +- 重命名ResourcePackage.ClearCacheBundleFilesAsync()方法为ClearCacheFilesAsync() + +## [2.2.7-preview] - 2024-12-30 + +### Improvements + +- 重构了下载器的委托方法。 + +- YooAssetSettings配置文件新增Package Manifest Prefix参数。 + + ```csharp + /// + /// 资源清单前缀名称(默认为空) + /// + public string PackageManifestPrefix = string.Empty; + ``` + +### Fixed + +- (#422) 修复了同步加载场景的NotImplementedException异常报错。 +- (#418) 修复了web远程文件系统初始化不正确的问题 +- (#392) 修复了引擎版本代码兼容相关的警告。 +- (#332) 修复了当用户的设备中有特殊字符时,URL路径无法被正确识别的问题。 + +### Added + +- 新增代码字段:AsyncOperationBase.PackageName + +### Changed + +- 重命名DownloaderOperation.OnDownloadOver()方法为DownloaderFinish() +- 重命名DownloaderOperation.OnDownloadProgress()方法为DownloadUpdate() +- 重命名DownloaderOperation.OnDownloadError()方法为DownloadError() +- 重命名DownloaderOperation.OnStartDownloadFile()方法为DownloadFileBegin() + +## [2.2.6-preview] - 2024-12-27 + +### Improvements + +- 增强了对Steam平台DLC拓展包的支持。 + + ```csharp + // 新增参数关闭Catalog目录查询内置文件的功能 + var fileSystemParams = CreateDefaultBuildinFileSystemParameters(); + fileSystemParams .AddParameter(FileSystemParametersDefine.DISABLE_CATALOG_FILE, true); + ``` + +- 资源句柄基类提供了统一的Release方法。 + + ```csharp + public abstract class HandleBase : IEnumerator, IDisposable + { + /// + /// 释放资源句柄 + /// + public void Release(); + + /// + /// 释放资源句柄 + /// + public void Dispose(); + } + ``` + +- 优化了场景卸载逻辑。 + + ```csharp + //框架内不在区分主场景和附加场景。 + //场景卸载后自动释放资源句柄。 + ``` + +### Fixed + +- 修复了Unity2020版本提示的脚本编译错误。 +- (#417) 修复了DefaultWebServerFileSystem文件系统内Catalog未起效的问题。 + +### Added + +- 新增示例文件 GetCacheBundleSizeOperation.cs + + 可以获取指定Package的缓存资源总大小。 + +### Removed + +- 移除了SceneHandle.IsMainScene()方法。 + +## [2.2.5-preview] - 2024-12-25 + +依赖的ScriptableBuildPipeline (SBP) 插件库版本切换为1.21.25版本! + +重构了ResourceManager相关的核心代码,方便借助文件系统扩展和支持更复杂的需求! + +### Editor + +- 新增了编辑器模拟构建管线 EditorSimulateBuildPipeline +- 移除了EBuildMode枚举类型,构建界面有变动。 +- IActiveRule分组激活接口新增GroupData类。 + +### Improvements + +- 增加抖音小游戏文件系统,见扩展示例代码。 + +- 微信小游戏文件系统支持删除无用缓存文件和全部缓存文件。 + +- 资源构建管线现在默认剔除了Gizmos和编辑器资源。 + +- 优化了资源构建管线里资源收集速度。 + + 资源收集速度提升100倍! + + ```csharp + class BuildParameters + { + /// + /// 使用资源依赖缓存数据库 + /// 说明:开启此项可以极大提高资源收集速度 + /// + public bool UseAssetDependencyDB = false; + } + ``` + +- WebPlayMode支持跨域加载。 + + ```csharp + // 创建默认的WebServer文件系统参数 + public static FileSystemParameters CreateDefaultWebServerFileSystemParameters(bool disableUnityWebCache = false) + + // 创建默认的WebRemote文件系统参数(支持跨域加载) + public static FileSystemParameters CreateDefaultWebRemoteFileSystemParameters(IRemoteServices remoteServices, bool disableUnityWebCache = false) + ``` + +- 编辑器模拟文件系统新增初始化参数:支持异步模拟加载帧数。 + + ```csharp + /// + /// 异步模拟加载最小帧数 + /// + FileSystemParametersDefine.ASYNC_SIMULATE_MIN_FRAME + + /// + /// 异步模拟加载最大帧数 + /// + FileSystemParametersDefine.ASYNC_SIMULATE_MAX_FRAME + ``` + +- 缓存文件系统新增初始化参数:支持设置下载器最大并发连接数和单帧最大请求数 + + ```csharp + var fileSystremParams = FileSystemParameters.CreateDefaultCacheFileSystemParameters(); + fileSystremParams .AddParameter(FileSystemParametersDefine.DOWNLOAD_MAX_CONCURRENCY, 99); + fileSystremParams .AddParameter(FileSystemParametersDefine.DOWNLOAD_MAX_REQUEST_PER_FRAME, 10); + ``` + +### Fixed + +- (#349) 修复了在加载清单的时候,即使本地存在缓存文件还会去远端下载。 +- (#361) 修复了协程里等待的asset handle被release,会无限等待并输出警告信息。 +- (#359) 修复了SubAssetsHandle.GetSubAssetObject会获取到同名的主资源。 +- (#387) 修复了加密后文件哈希冲突的时候没有抛出异常错误。 +- (#404) 修复了Unity2022.3.8版本提示编译错误:Cannot resolve symbol 'AsyncInstantiateOperation' + +### Added + +- 新增示例文件 CopyBuildinManifestOperation.cs + +- 新增示例文件 LoadGameObjectOperation.cs + +- 新增了获取配置清单详情的方法 + + ```csharp + class ResourcePackage + { + public PackageDetails GetPackageDetails() + } + ``` + +- 新增了获取所有资源信息的方法 + + ```csharp + class ResourcePackage + { + public AssetInfo[] GetAllAssetInfos() + } + ``` + +- 新增了清理缓存文件的通用方法 + + ```csharp + /// + /// 文件清理方式 + /// + public enum EFileClearMode + { + /// + /// 清理所有文件 + /// + ClearAllBundleFiles = 1, + /// + /// 清理未在使用的文件 + /// + ClearUnusedBundleFiles = 2, + /// + /// 清理指定标签的文件 + /// 说明:需要指定参数,可选:string, string[], List + /// + ClearBundleFilesByTags = 3, + } + class ResourcePackage + { + /// + /// 清理缓存文件 + /// + /// 清理方式 + /// 执行参数 + public ClearCacheBundleFilesOperation ClearCacheBundleFilesAsync(EFileClearMode clearMode, object clearParam = null) + } + ``` + +### Changed + +- 修改了EditorSimulateModeHelper.SimulateBuild()方法 + +- 重命名ResourcePackage.GetAssetsInfoByTags()方法为GetAssetInfosByTags() + +- 实例化对象方法增加激活参数。 + + ```csharp + public InstantiateOperation InstantiateAsync(bool actived = true) + ``` + +- 清单文件的版本提升到2.2.5版本 + + ```csharp + /// + /// 资源包裹的备注信息 + /// + public string PackageNote; + ``` + + +### Removed + +- 移除了HostPlayModeParameters.DeliveryFileSystemParameters字段 +- 移除了ResourcePackage.ClearAllBundleFilesAsync()方法 +- 移除了ResourcePackage.ClearUnusedBundleFilesAsync()方法 +- 移除了FileSystemParameters.CreateDefaultBuildinRawFileSystemParameters()方法 +- 移除了FileSystemParameters.CreateDefaultCacheRawFileSystemParameters()方法 +- 移除了枚举类型:EDefaultBuildPipeline +- 移除了配置参数:YooAssetSettings.ManifestFileName + +## [2.2.4-preview] - 2024-08-15 + +### Fixed + +- 修复了HostPlayMode初始化卡死的问题。 + +## [2.2.3-preview] - 2024-08-13 + +### Fixed + +- (#311) 修复了断点续传下载器极小概率报错 : “416 Range Not Satisfiable” + +### Improvements + +- 原生文件构建管线支持原生文件加密。 + +- HostPlayMode模式下内置文件系统初始化参数可以为空。 + +- 场景加载增加了LocalPhysicsMode参数来控制物理运行模式。 + +- 默认的内置文件系统和缓存文件系统增加解密方法。 + + ```csharp + /// + /// 创建默认的内置文件系统参数 + /// + /// 加密文件解密服务类 + /// 缓存文件的校验等级 + /// 内置文件的根路径 + public static FileSystemParameters CreateDefaultBuildinFileSystemParameters(IDecryptionServices decryptionServices, EFileVerifyLevel verifyLevel, string rootDirectory); + + /// + /// 创建默认的缓存文件系统参数 + /// + /// 远端资源地址查询服务类 + /// 加密文件解密服务类 + /// 缓存文件的校验等级 + /// 文件系统的根目录 + public static FileSystemParameters CreateDefaultCacheFileSystemParameters(IRemoteServices remoteServices, IDecryptionServices decryptionServices, EFileVerifyLevel verifyLevel, string rootDirectory); + ``` + +## [2.2.2-preview] - 2024-07-31 + +### Fixed + +- (#321) 修复了在Unity2022里编辑器下离线模式运行失败的问题。 +- (#325) 修复了在Unity2019里编译报错问题。 + +## [2.2.1-preview] - 2024-07-10 + +统一了所有PlayMode的初始化逻辑,EditorSimulateMode和OfflinePlayMode初始化不再主动加载资源清单! + +### Added + +- 新增了IFileSystem.ReadFileData方法,支持原生文件自定义获取文本和二进制数据。 + +### Improvements + +- 优化了DefaultWebFileSystem和DefaultBuildFileSystem文件系统的内部初始化逻辑。 + +## [2.2.0-preview] - 2024-07-07 + +重构了运行时代码,新增了文件系统接口(IFileSystem)方便开发者扩展特殊需求。 + +新增微信小游戏文件系统示例代码,详细见Extension Sample/Runtime/WechatFileSystem + +### Added + +- 新增了ResourcePackage.DestroyAsync方法 + +- 新增了FileSystemParameters类帮助初始化文件系统 + + 内置了编辑器文件系统参数,内置文件系统参数,缓存文件系统参数,Web文件系统参数。 + + ```csharp + public class FileSystemParameters + { + /// + /// 文件系统类 + /// + public string FileSystemClass { private set; get; } + + /// + /// 文件系统的根目录 + /// + public string RootDirectory { private set; get; } + + /// + /// 添加自定义参数 + /// + public void AddParameter(string name, object value) + } + ``` + +### Changed + +- 重构了InitializeParameters初始化参数 +- 重命名YooAssets.DestroyPackage方法为RemovePackage +- 重命名ResourcePackage.UpdatePackageVersionAsync方法为RequestPackageVersionAsync +- 重命名ResourcePackage.UnloadUnusedAssets方法为UnloadUnusedAssetsAsync +- 重命名ResourcePackage.ForceUnloadAllAssets方法为UnloadAllAssetsAsync +- 重命名ResourcePackage.ClearUnusedCacheFilesAsync方法为ClearUnusedBundleFilesAsync +- 重命名ResourcePackage.ClearAllCacheFilesAsync方法为ClearAllBundleFilesAsync + +### Removed + +- 移除了YooAssets.Destroy方法 +- 移除了YooAssets.SetDownloadSystemClearFileResponseCode方法 +- 移除了YooAssets.SetCacheSystemDisableCacheOnWebGL方法 +- 移除了ResourcePackage.GetPackageBuildinRootDirectory方法 +- 移除了ResourcePackage.GetPackageSandboxRootDirectory方法 +- 移除了ResourcePackage.ClearPackageSandbox方法 +- 移除了IBuildinQueryServices接口 +- 移除了IDeliveryLoadServices接口 +- 移除了IDeliveryQueryServices接口 + + +## [2.1.2] - 2024-05-16 + +SBP库依赖版本升级至2.1.3 + +### Fixed + +- (#236) 修复了资源配置界面AutoCollectShader复选框没有刷新的问题。 +- (#244) 修复了导入器在安卓平台导入本地下载的资源失败的问题。 +- (#268) 修复了挂起场景未解除状态前无法卸载的问题。 +- (#269) 优化场景挂起流程,支持中途取消挂起操作。 +- (#276) 修复了HostPlayMode模式下,如果内置清单是最新版本,每次运行都会触发拷贝行为。 +- (#289) 修复了Unity2019版本脚本IWebRequester编译报错。 +- (#295) 解决了在安卓移动平台,华为和三星真机上有极小概率加载资源包失败 : Unable to open archive file + +### Added + +- 新增GetAllCacheFileInfosOperation()获取缓存文件信息的方法。 + +- 新增LoadSceneSync()同步加载场景的方法。 + +- 新增IIgnoreRule接口,资源收集流程可以自定义。 + +- 新增IWechatQueryServices接口,用于微信平台本地文件查询。 + + 后续将会通过虚拟文件系统来支持! + +### Changed + +- 调整了UnloadSceneOperation代码里场景的卸载顺序。 + +### Improvements + +- 优化了资源清单的解析过程。 +- 移除资源包名里的空格字符。 +- 支持华为鸿蒙系统。 + ## [2.1.1] - 2024-01-17 ### Fixed diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderHelper.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderHelper.cs index b222318d..020c2162 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderHelper.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderHelper.cs @@ -22,7 +22,7 @@ namespace YooAsset.Editor /// public static string GetStreamingAssetsRoot() { - return $"{Application.dataPath}/StreamingAssets/{YooAssetSettingsData.Setting.DefaultYooFolderName}/"; + return YooAssetSettingsData.GetYooEditorBuildinRoot(); } } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderSetting.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderSetting.cs index 78e4abdb..48fb8f04 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderSetting.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderSetting.cs @@ -18,18 +18,6 @@ namespace YooAsset.Editor EditorPrefs.SetInt(key, (int)buildPipeline); } - // EBuildMode - public static EBuildMode GetPackageBuildMode(string packageName, EBuildPipeline buildPipeline) - { - string key = $"{Application.productName}_{packageName}_{buildPipeline}_{nameof(EBuildMode)}"; - return (EBuildMode)EditorPrefs.GetInt(key, (int)EBuildMode.ForceRebuild); - } - public static void SetPackageBuildMode(string packageName, EBuildPipeline buildPipeline, EBuildMode buildMode) - { - string key = $"{Application.productName}_{packageName}_{buildPipeline}_{nameof(EBuildMode)}"; - EditorPrefs.SetInt(key, (int)buildMode); - } - // ECompressOption public static ECompressOption GetPackageCompressOption(string packageName, EBuildPipeline buildPipeline) { @@ -89,5 +77,29 @@ namespace YooAsset.Editor string key = $"{Application.productName}_{packageName}_{buildPipeline}_EncyptionClassName"; EditorPrefs.SetString(key, encyptionClassName); } + + // ClearBuildCache + public static bool GetPackageClearBuildCache(string packageName, EBuildPipeline buildPipeline) + { + string key = $"{Application.productName}_{packageName}_{buildPipeline}_ClearBuildCache"; + return EditorPrefs.GetInt(key, 0) > 0; + } + public static void SetPackageClearBuildCache(string packageName, EBuildPipeline buildPipeline, bool clearBuildCache) + { + string key = $"{Application.productName}_{packageName}_{buildPipeline}_ClearBuildCache"; + EditorPrefs.SetInt(key, clearBuildCache ? 1 : 0); + } + + // UseAssetDependencyDB + public static bool GetPackageUseAssetDependencyDB(string packageName, EBuildPipeline buildPipeline) + { + string key = $"{Application.productName}_{packageName}_{buildPipeline}_UseAssetDependencyDB"; + return EditorPrefs.GetInt(key, 0) > 0; + } + public static void SetPackageUseAssetDependencyDB(string packageName, EBuildPipeline buildPipeline, bool useAssetDependencyDB) + { + string key = $"{Application.productName}_{packageName}_{buildPipeline}_UseAssetDependencyDB"; + EditorPrefs.SetInt(key, useAssetDependencyDB ? 1 : 0); + } } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs index d6ea3eac..c97246c5 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs @@ -69,6 +69,7 @@ namespace YooAsset.Editor { _pipelineMenu = new ToolbarMenu(); _pipelineMenu.style.width = 200; + _pipelineMenu.menu.AppendAction(EBuildPipeline.EditorSimulateBuildPipeline.ToString(), PipelineMenuAction, PipelineMenuFun, EBuildPipeline.EditorSimulateBuildPipeline); _pipelineMenu.menu.AppendAction(EBuildPipeline.BuiltinBuildPipeline.ToString(), PipelineMenuAction, PipelineMenuFun, EBuildPipeline.BuiltinBuildPipeline); _pipelineMenu.menu.AppendAction(EBuildPipeline.ScriptableBuildPipeline.ToString(), PipelineMenuAction, PipelineMenuFun, EBuildPipeline.ScriptableBuildPipeline); _pipelineMenu.menu.AppendAction(EBuildPipeline.RawFileBuildPipeline.ToString(), PipelineMenuAction, PipelineMenuFun, EBuildPipeline.RawFileBuildPipeline); @@ -93,7 +94,11 @@ namespace YooAsset.Editor _pipelineMenu.text = _buildPipeline.ToString(); var buildTarget = EditorUserBuildSettings.activeBuildTarget; - if (_buildPipeline == EBuildPipeline.BuiltinBuildPipeline) + if (_buildPipeline == EBuildPipeline.EditorSimulateBuildPipeline) + { + var viewer = new EditorSimulateBuildPipelineViewer(_buildPackage, buildTarget, _container); + } + else if (_buildPipeline == EBuildPipeline.BuiltinBuildPipeline) { var viewer = new BuiltinBuildPipelineViewer(_buildPackage, buildTarget, _container); } diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleSimulateBuilder.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleSimulateBuilder.cs index 761b2121..4508ed80 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleSimulateBuilder.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleSimulateBuilder.cs @@ -8,87 +8,37 @@ namespace YooAsset.Editor /// /// 模拟构建 /// - public static string SimulateBuild(string buildPipelineName, string packageName) + public static PackageInvokeBuildResult SimulateBuild(PackageInvokeBuildParam buildParam) { - if (buildPipelineName == EBuildPipeline.BuiltinBuildPipeline.ToString()) + string packageName = buildParam.PackageName; + string buildPipelineName = buildParam.BuildPipelineName; + + if (buildPipelineName == "EditorSimulateBuildPipeline") { - BuiltinBuildParameters buildParameters = new BuiltinBuildParameters(); + var buildParameters = new EditorSimulateBuildParameters(); buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); - buildParameters.BuildPipeline = buildPipelineName; + buildParameters.BuildPipeline = EBuildPipeline.EditorSimulateBuildPipeline.ToString(); + buildParameters.BuildBundleType = (int)EBuildBundleType.VirtualBundle; buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget; - buildParameters.BuildMode = EBuildMode.SimulateBuild; buildParameters.PackageName = packageName; buildParameters.PackageVersion = "Simulate"; buildParameters.FileNameStyle = EFileNameStyle.HashName; buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None; buildParameters.BuildinFileCopyParams = string.Empty; - BuiltinBuildPipeline pipeline = new BuiltinBuildPipeline(); - var buildResult = pipeline.Run(buildParameters, false); + var pipeline = new EditorSimulateBuildPipeline(); + BuildResult buildResult = pipeline.Run(buildParameters, false); if (buildResult.Success) { - string manifestFileName = YooAssetSettingsData.GetManifestBinaryFileName(buildParameters.PackageName, buildParameters.PackageVersion); - string manifestFilePath = $"{buildResult.OutputPackageDirectory}/{manifestFileName}"; - return manifestFilePath; + var reulst = new PackageInvokeBuildResult(); + reulst.PackageRootDirectory = buildResult.OutputPackageDirectory; + return reulst; } else { - return null; - } - } - else if (buildPipelineName == EBuildPipeline.ScriptableBuildPipeline.ToString()) - { - ScriptableBuildParameters buildParameters = new ScriptableBuildParameters(); - buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); - buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); - buildParameters.BuildPipeline = buildPipelineName; - buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget; - buildParameters.BuildMode = EBuildMode.SimulateBuild; - buildParameters.PackageName = packageName; - buildParameters.PackageVersion = "Simulate"; - buildParameters.FileNameStyle = EFileNameStyle.HashName; - buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None; - buildParameters.BuildinFileCopyParams = string.Empty; - - ScriptableBuildPipeline pipeline = new ScriptableBuildPipeline(); - var buildResult = pipeline.Run(buildParameters, true); - if (buildResult.Success) - { - string manifestFileName = YooAssetSettingsData.GetManifestBinaryFileName(buildParameters.PackageName, buildParameters.PackageVersion); - string manifestFilePath = $"{buildResult.OutputPackageDirectory}/{manifestFileName}"; - return manifestFilePath; - } - else - { - return null; - } - } - else if (buildPipelineName == EBuildPipeline.RawFileBuildPipeline.ToString()) - { - RawFileBuildParameters buildParameters = new RawFileBuildParameters(); - buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); - buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); - buildParameters.BuildPipeline = buildPipelineName; - buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget; - buildParameters.BuildMode = EBuildMode.SimulateBuild; - buildParameters.PackageName = packageName; - buildParameters.PackageVersion = "Simulate"; - buildParameters.FileNameStyle = EFileNameStyle.HashName; - buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None; - buildParameters.BuildinFileCopyParams = string.Empty; - - RawFileBuildPipeline pipeline = new RawFileBuildPipeline(); - var buildResult = pipeline.Run(buildParameters, true); - if (buildResult.Success) - { - string manifestFileName = YooAssetSettingsData.GetManifestBinaryFileName(buildParameters.PackageName, buildParameters.PackageVersion); - string manifestFilePath = $"{buildResult.OutputPackageDirectory}/{manifestFileName}"; - return manifestFilePath; - } - else - { - return null; + Debug.LogError(buildResult.ErrorInfo); + throw new System.Exception($"{nameof(EditorSimulateBuildPipeline)} build failed !"); } } else diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildBundleInfo.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildBundleInfo.cs index d009ec5a..4c0bd888 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildBundleInfo.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildBundleInfo.cs @@ -56,6 +56,7 @@ namespace YooAsset.Editor public string EncryptedFilePath { set; get; } #endregion + private readonly HashSet _assetPaths = new HashSet(); /// /// 参与构建的资源列表 @@ -84,9 +85,11 @@ namespace YooAsset.Editor /// public void PackAsset(BuildAssetInfo buildAsset) { - if (IsContainsAsset(buildAsset.AssetInfo.AssetPath)) - throw new System.Exception($"Should never get here ! Asset is existed : {buildAsset.AssetInfo.AssetPath}"); + string assetPath = buildAsset.AssetInfo.AssetPath; + if (_assetPaths.Contains(assetPath)) + throw new System.Exception($"Should never get here ! Asset is existed : {assetPath}"); + _assetPaths.Add(assetPath); MainAssets.Add(buildAsset); } @@ -95,14 +98,7 @@ namespace YooAsset.Editor /// public bool IsContainsAsset(string assetPath) { - foreach (var buildAsset in MainAssets) - { - if (buildAsset.AssetInfo.AssetPath == assetPath) - { - return true; - } - } - return false; + return _assetPaths.Contains(assetPath); } /// diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs index 0180e73c..962d2ae8 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs @@ -22,20 +22,20 @@ namespace YooAsset.Editor public string BuildinFileRoot; /// - /// 构建管线 + /// 构建管线名称 /// public string BuildPipeline; + /// + /// 构建资源包类型 + /// + public int BuildBundleType; + /// /// 构建的平台 /// public BuildTarget BuildTarget; - /// - /// 构建模式 - /// - public EBuildMode BuildMode; - /// /// 构建的包裹名称 /// @@ -46,9 +46,24 @@ namespace YooAsset.Editor /// public string PackageVersion; + /// + /// 构建的包裹备注 + /// + public string PackageNote; /// - /// 是否启用共享资源打包 + /// 清空构建缓存文件 + /// + public bool ClearBuildCacheFiles = false; + + /// + /// 使用资源依赖缓存数据库 + /// 说明:开启此项可以极大提高资源收集速度 + /// + public bool UseAssetDependencyDB = false; + + /// + /// 启用共享资源打包 /// public bool EnableSharePackRule = false; @@ -60,12 +75,12 @@ namespace YooAsset.Editor /// /// 资源包名称样式 /// - public EFileNameStyle FileNameStyle; + public EFileNameStyle FileNameStyle = EFileNameStyle.HashName; /// /// 内置文件的拷贝选项 /// - public EBuildinFileCopyOption BuildinFileCopyOption; + public EBuildinFileCopyOption BuildinFileCopyOption = EBuildinFileCopyOption.None; /// /// 内置文件的拷贝参数 @@ -95,32 +110,12 @@ namespace YooAsset.Editor throw new Exception(message); } - // 检测是否有未保存场景 - if (BuildMode != EBuildMode.SimulateBuild) - { - if (EditorTools.HasDirtyScenes()) - { - string message = BuildLogger.GetErrorMessage(ErrorCode.FoundUnsavedScene, "Found unsaved scene !"); - throw new Exception(message); - } - } - // 检测构建参数合法性 if (BuildTarget == BuildTarget.NoTarget) { string message = BuildLogger.GetErrorMessage(ErrorCode.NoBuildTarget, "Please select the build target platform !"); throw new Exception(message); } - if (string.IsNullOrEmpty(PackageName)) - { - string message = BuildLogger.GetErrorMessage(ErrorCode.PackageNameIsNullOrEmpty, "Package name is null or empty !"); - throw new Exception(message); - } - if (string.IsNullOrEmpty(PackageVersion)) - { - string message = BuildLogger.GetErrorMessage(ErrorCode.PackageVersionIsNullOrEmpty, "Package version is null or empty !"); - throw new Exception(message); - } if (string.IsNullOrEmpty(BuildOutputRoot)) { string message = BuildLogger.GetErrorMessage(ErrorCode.BuildOutputRootIsNullOrEmpty, "Build output root is null or empty !"); @@ -131,33 +126,31 @@ namespace YooAsset.Editor string message = BuildLogger.GetErrorMessage(ErrorCode.BuildinFileRootIsNullOrEmpty, "Buildin file root is null or empty !"); throw new Exception(message); } - - // 强制构建删除包裹目录 - if (BuildMode == EBuildMode.ForceRebuild) + if (string.IsNullOrEmpty(BuildPipeline)) { - string packageRootDirectory = GetPackageRootDirectory(); - if (EditorTools.DeleteDirectory(packageRootDirectory)) - { - BuildLogger.Log($"Delete package root directory: {packageRootDirectory}"); - } + string message = BuildLogger.GetErrorMessage(ErrorCode.BuildPipelineIsNullOrEmpty, "Build pipeline is null or empty !"); + throw new Exception(message); + } + if (BuildBundleType == (int)EBuildBundleType.Unknown) + { + string message = BuildLogger.GetErrorMessage(ErrorCode.BuildBundleTypeIsUnknown, $"Build bundle type is unknown {BuildBundleType} !"); + throw new Exception(message); + } + if (string.IsNullOrEmpty(PackageName)) + { + string message = BuildLogger.GetErrorMessage(ErrorCode.PackageNameIsNullOrEmpty, "Package name is null or empty !"); + throw new Exception(message); + } + if (string.IsNullOrEmpty(PackageVersion)) + { + string message = BuildLogger.GetErrorMessage(ErrorCode.PackageVersionIsNullOrEmpty, "Package version is null or empty !"); + throw new Exception(message); } - // 检测包裹输出目录是否存在 - if (BuildMode != EBuildMode.SimulateBuild) + // 设置默认备注信息 + if (string.IsNullOrEmpty(PackageNote)) { - string packageOutputDirectory = GetPackageOutputDirectory(); - if (Directory.Exists(packageOutputDirectory)) - { - string message = BuildLogger.GetErrorMessage(ErrorCode.PackageOutputDirectoryExists, $"Package outout directory exists: {packageOutputDirectory}"); - throw new Exception(message); - } - } - - // 如果输出目录不存在 - string pipelineOutputDirectory = GetPipelineOutputDirectory(); - if (EditorTools.CreateDirectory(pipelineOutputDirectory)) - { - BuildLogger.Log($"Create pipeline output directory: {pipelineOutputDirectory}"); + PackageNote = DateTime.Now.ToString(); } } diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs index 23120ef4..b6979fbe 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs @@ -12,19 +12,22 @@ namespace YooAsset.Editor public abstract class TaskCreateManifest { - private readonly Dictionary _cachedBundleID = new Dictionary(10000); + private readonly Dictionary _cachedBundleIndexIDs = new Dictionary(10000); private readonly Dictionary> _cacheBundleTags = new Dictionary>(10000); /// /// 创建补丁清单文件到输出目录 /// - protected void CreateManifestFile(BuildContext context) + protected void CreateManifestFile(bool processBundleDepends, bool processBundleTags, BuildContext context) { var buildMapContext = context.GetContextObject(); var buildParametersContext = context.GetContextObject(); var buildParameters = buildParametersContext.Parameters; string packageOutputDirectory = buildParametersContext.GetPackageOutputDirectory(); + // 检测资源包哈希冲突 + CheckBundleHashConflict(buildMapContext); + // 创建新补丁清单 PackageManifest manifest = new PackageManifest(); manifest.FileVersion = YooAssetSettings.ManifestFileVersion; @@ -32,20 +35,24 @@ namespace YooAsset.Editor manifest.LocationToLower = buildMapContext.Command.LocationToLower; manifest.IncludeAssetGUID = buildMapContext.Command.IncludeAssetGUID; manifest.OutputNameStyle = (int)buildParameters.FileNameStyle; + manifest.BuildBundleType = buildParameters.BuildBundleType; manifest.BuildPipeline = buildParameters.BuildPipeline; manifest.PackageName = buildParameters.PackageName; manifest.PackageVersion = buildParameters.PackageVersion; - manifest.BundleList = GetAllPackageBundle(buildMapContext); - manifest.AssetList = GetAllPackageAsset(buildMapContext); + manifest.PackageNote = buildParameters.PackageNote; + manifest.AssetList = CreatePackageAssetList(buildMapContext); + manifest.BundleList = CreatePackageBundleList(buildMapContext); - if (buildParameters.BuildMode != EBuildMode.SimulateBuild) - { - // 处理资源包的依赖列表 + // 处理资源清单的ID数据 + ProcessPacakgeIDs(manifest); + + // 处理资源包的依赖列表 + if (processBundleDepends) ProcessBundleDepends(context, manifest); - // 处理资源包的标签集合 + // 处理资源包的标签集合 + if (processBundleTags) ProcessBundleTags(manifest); - } // 创建补丁清单文本文件 { @@ -61,7 +68,7 @@ namespace YooAsset.Editor string fileName = YooAssetSettingsData.GetManifestBinaryFileName(buildParameters.PackageName, buildParameters.PackageVersion); string filePath = $"{packageOutputDirectory}/{fileName}"; ManifestTools.SerializeToBinary(filePath, manifest); - packageHash = HashUtility.FileMD5(filePath); + packageHash = HashUtility.FileCRC32(filePath); BuildLogger.Log($"Create package manifest file: {filePath}"); ManifestContext manifestContext = new ManifestContext(); @@ -87,15 +94,37 @@ namespace YooAsset.Editor } } + /// + /// 检测资源包哈希冲突 + /// + private void CheckBundleHashConflict(BuildMapContext buildMapContext) + { + // 说明:在特殊情况下,例如某些文件加密算法会导致加密后的文件哈希值冲突! + // 说明:二进制完全相同的原生文件也会冲突! + HashSet guids = new HashSet(); + foreach (var bundleInfo in buildMapContext.Collection) + { + if (guids.Contains(bundleInfo.PackageFileHash)) + { + string message = BuildLogger.GetErrorMessage(ErrorCode.BundleHashConflict, $"Bundle hash conflict : {bundleInfo.BundleName}"); + throw new Exception(message); + } + else + { + guids.Add(bundleInfo.PackageFileHash); + } + } + } + /// /// 获取资源包的依赖集合 /// protected abstract string[] GetBundleDepends(BuildContext context, string bundleName); /// - /// 获取主资源对象列表 + /// 创建资源对象列表 /// - private List GetAllPackageAsset(BuildMapContext buildMapContext) + private List CreatePackageAssetList(BuildMapContext buildMapContext) { List result = new List(1000); foreach (var bundleInfo in buildMapContext.Collection) @@ -108,17 +137,20 @@ namespace YooAsset.Editor packageAsset.AssetPath = assetInfo.AssetInfo.AssetPath; packageAsset.AssetGUID = buildMapContext.Command.IncludeAssetGUID ? assetInfo.AssetInfo.AssetGUID : string.Empty; packageAsset.AssetTags = assetInfo.AssetTags.ToArray(); - packageAsset.BundleID = GetCachedBundleID(assetInfo.BundleName); + packageAsset.BundleNameInEditor = assetInfo.BundleName; result.Add(packageAsset); } } + + // 按照AssetPath排序 + result.Sort((a, b) => a.AssetPath.CompareTo(b.AssetPath)); return result; } /// - /// 获取资源包列表 + /// 创建资源包列表 /// - private List GetAllPackageBundle(BuildMapContext buildMapContext) + private List CreatePackageBundleList(BuildMapContext buildMapContext) { List result = new List(1000); foreach (var bundleInfo in buildMapContext.Collection) @@ -127,14 +159,28 @@ namespace YooAsset.Editor result.Add(packageBundle); } - // 注意:缓存资源包索引 - for (int index = 0; index < result.Count; index++) + // 按照BundleName排序 + result.Sort((a, b) => a.BundleName.CompareTo(b.BundleName)); + return result; + } + + /// + /// 处理资源清单的ID数据 + /// + private void ProcessPacakgeIDs(PackageManifest manifest) + { + // 注意:优先缓存资源包索引 + for (int index = 0; index < manifest.BundleList.Count; index++) { - string bundleName = result[index].BundleName; - _cachedBundleID.Add(bundleName, index); + string bundleName = manifest.BundleList[index].BundleName; + _cachedBundleIndexIDs.Add(bundleName, index); } - return result; + foreach (var packageAsset in manifest.AssetList) + { + string bundleName = packageAsset.BundleNameInEditor; + packageAsset.BundleID = GetCachedBundleIndexID(bundleName); + } } /// @@ -145,12 +191,12 @@ namespace YooAsset.Editor // 查询引擎生成的资源包依赖关系,然后记录到清单 foreach (var packageBundle in manifest.BundleList) { - int mainBundleID = GetCachedBundleID(packageBundle.BundleName); + int mainBundleID = GetCachedBundleIndexID(packageBundle.BundleName); var depends = GetBundleDepends(context, packageBundle.BundleName); List dependIDs = new List(depends.Length); foreach (var dependBundleName in depends) { - int bundleID = GetCachedBundleID(dependBundleName); + int bundleID = GetCachedBundleIndexID(dependBundleName); if (bundleID != mainBundleID) dependIDs.Add(bundleID); } @@ -171,18 +217,21 @@ namespace YooAsset.Editor CacheBundleTags(bundleID, assetTags); var packageBundle = manifest.BundleList[bundleID]; - foreach (var dependBundleID in packageBundle.DependIDs) + if (packageBundle.DependIDs != null) { - CacheBundleTags(dependBundleID, assetTags); + foreach (var dependBundleID in packageBundle.DependIDs) + { + CacheBundleTags(dependBundleID, assetTags); + } } } for (int index = 0; index < manifest.BundleList.Count; index++) { var packageBundle = manifest.BundleList[index]; - if (_cacheBundleTags.ContainsKey(index)) + if (_cacheBundleTags.TryGetValue(index, out var value)) { - packageBundle.Tags = _cacheBundleTags[index].ToArray(); + packageBundle.Tags = value.ToArray(); } else { @@ -205,13 +254,13 @@ namespace YooAsset.Editor } /// - /// 获取资源包的索引ID + /// 获取缓存的资源包的索引ID /// - private int GetCachedBundleID(string bundleName) + private int GetCachedBundleIndexID(string bundleName) { - if (_cachedBundleID.TryGetValue(bundleName, out int value) == false) + if (_cachedBundleIndexIDs.TryGetValue(bundleName, out int value) == false) { - throw new Exception($"Should never get here ! Not found bundle ID : {bundleName}"); + throw new Exception($"Should never get here ! Not found bundle index ID : {bundleName}"); } return value; } diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateReport.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateReport.cs index dccf6080..17c5580a 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateReport.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateReport.cs @@ -28,9 +28,10 @@ namespace YooAsset.Editor buildReport.Summary.BuildSeconds = BuildRunner.TotalSeconds; buildReport.Summary.BuildTarget = buildParameters.BuildTarget; buildReport.Summary.BuildPipeline = buildParameters.BuildPipeline; - buildReport.Summary.BuildMode = buildParameters.BuildMode; + buildReport.Summary.BuildBundleType = buildParameters.BuildBundleType; buildReport.Summary.BuildPackageName = buildParameters.PackageName; buildReport.Summary.BuildPackageVersion = buildParameters.PackageVersion; + buildReport.Summary.BuildPackageNote = buildParameters.PackageNote; // 收集器配置 buildReport.Summary.UniqueBundleName = buildMapContext.Command.UniqueBundleName; @@ -41,6 +42,8 @@ namespace YooAsset.Editor buildReport.Summary.AutoCollectShaders = buildMapContext.Command.AutoCollectShaders; // 构建参数 + buildReport.Summary.ClearBuildCacheFiles = buildParameters.ClearBuildCacheFiles; + buildReport.Summary.UseAssetDependencyDB = buildParameters.UseAssetDependencyDB; buildReport.Summary.EnableSharePackRule = buildParameters.EnableSharePackRule; buildReport.Summary.EncryptionClassName = buildParameters.EncryptionServices == null ? "null" : buildParameters.EncryptionServices.GetType().FullName; if (buildParameters.BuildPipeline == nameof(BuiltinBuildPipeline)) @@ -113,7 +116,7 @@ namespace YooAsset.Editor buildReport.IndependAssets = new List(buildMapContext.IndependAssets); // 序列化文件 - string fileName = YooAssetSettingsData.GetReportFileName(buildParameters.PackageName, buildParameters.PackageVersion); + string fileName = YooAssetSettingsData.GetBuildReportFileName(buildParameters.PackageName, buildParameters.PackageVersion); string filePath = $"{packageOutputDirectory}/{fileName}"; BuildReport.Serialize(filePath, buildReport); BuildLogger.Log($"Create build report file: {filePath}"); @@ -130,6 +133,7 @@ namespace YooAsset.Editor string dependBundleName = manifest.BundleList[index].BundleName; dependBundles.Add(dependBundleName); } + dependBundles.Sort(); return dependBundles; } @@ -159,6 +163,7 @@ namespace YooAsset.Editor result.Add(dependAssetInfo.AssetInfo.AssetPath); } } + result.Sort(); return result; } @@ -168,7 +173,9 @@ namespace YooAsset.Editor private List GetAllBuiltinAssets(BuildMapContext buildMapContext, string bundleName) { var bundleInfo = buildMapContext.GetBundleInfo(bundleName); - return bundleInfo.GetAllBuiltinAssetPaths(); + List result = bundleInfo.GetAllBuiltinAssetPaths(); + result.Sort(); + return result; } private int GetMainAssetCount(PackageManifest manifest) diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskEncryption.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskEncryption.cs index d430ae1c..7e9369d7 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskEncryption.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskEncryption.cs @@ -26,7 +26,7 @@ namespace YooAsset.Editor { EncryptFileInfo fileInfo = new EncryptFileInfo(); fileInfo.BundleName = bundleInfo.BundleName; - fileInfo.FilePath = $"{pipelineOutputDirectory}/{bundleInfo.BundleName}"; + fileInfo.FileLoadPath = $"{pipelineOutputDirectory}/{bundleInfo.BundleName}"; var encryptResult = encryptionServices.Encrypt(fileInfo); if (encryptResult.Encrypted) { diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs index 6e78c054..1371506c 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs @@ -12,16 +12,16 @@ namespace YooAsset.Editor /// /// 生成资源构建上下文 /// - public BuildMapContext CreateBuildMap(BuildParameters buildParameters) + public BuildMapContext CreateBuildMap(bool simulateBuild, BuildParameters buildParameters) { BuildMapContext context = new BuildMapContext(); - var buildMode = buildParameters.BuildMode; var packageName = buildParameters.PackageName; Dictionary allBuildAssetInfos = new Dictionary(1000); // 1. 获取所有收集器收集的资源 - var collectResult = AssetBundleCollectorSettingData.Setting.GetPackageAssets(buildMode, packageName); + bool useAssetDependencyDB = buildParameters.UseAssetDependencyDB; + var collectResult = AssetBundleCollectorSettingData.Setting.GetPackageAssets(simulateBuild, useAssetDependencyDB, packageName); List allCollectAssets = collectResult.CollectAssets; // 2. 剔除未被引用的依赖项资源 @@ -56,9 +56,9 @@ namespace YooAsset.Editor string bundleName = collectAssetInfo.BundleName; foreach (var dependAsset in collectAssetInfo.DependAssets) { - if (allBuildAssetInfos.ContainsKey(dependAsset.AssetPath)) + if (allBuildAssetInfos.TryGetValue(dependAsset.AssetPath, out var value)) { - allBuildAssetInfos[dependAsset.AssetPath].AddReferenceBundleName(bundleName); + value.AddReferenceBundleName(bundleName); } else { diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskUpdateBundleInfo.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskUpdateBundleInfo.cs index 7cf43ecc..2889381a 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskUpdateBundleInfo.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskUpdateBundleInfo.cs @@ -65,32 +65,5 @@ namespace YooAsset.Editor protected abstract string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext); protected abstract string GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext); protected abstract long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext); - - protected string GetFilePathTempHash(string filePath) - { - byte[] bytes = Encoding.UTF8.GetBytes(filePath); - return HashUtility.BytesMD5(bytes); - - // 注意:在文件路径的哈希值冲突的情况下,可以使用下面的方法 - //return $"{HashUtility.BytesMD5(bytes)}-{Guid.NewGuid():N}"; - } - protected long GetBundleTempSize(BuildBundleInfo bundleInfo) - { - long tempSize = 0; - - var assetPaths = bundleInfo.GetAllMainAssetPaths(); - foreach (var assetPath in assetPaths) - { - long size = FileUtility.GetFileSize(assetPath); - tempSize += size; - } - - if (tempSize == 0) - { - string message = BuildLogger.GetErrorMessage(ErrorCode.BundleTempSizeIsZero, $"Bundle temp size is zero, check bundle main asset list : {bundleInfo.BundleName}"); - throw new Exception(message); - } - return tempSize; - } } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskBuilding_BBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskBuilding_BBP.cs index f15882a8..83709a9e 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskBuilding_BBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskBuilding_BBP.cs @@ -20,11 +20,6 @@ namespace YooAsset.Editor var buildMapContext = context.GetContextObject(); var builtinBuildParameters = buildParametersContext.Parameters as BuiltinBuildParameters; - // 模拟构建模式下跳过引擎构建 - var buildMode = buildParametersContext.Parameters.BuildMode; - if (buildMode == EBuildMode.SimulateBuild) - return; - // 开始构建 string pipelineOutputDirectory = buildParametersContext.GetPipelineOutputDirectory(); BuildAssetBundleOptions buildOptions = builtinBuildParameters.GetBundleBuildOptions(); @@ -35,14 +30,12 @@ namespace YooAsset.Editor throw new Exception(message); } - if (buildMode == EBuildMode.ForceRebuild || buildMode == EBuildMode.IncrementalBuild) + // 检测输出目录 + string unityOutputManifestFilePath = $"{pipelineOutputDirectory}/{YooAssetSettings.OutputFolderName}"; + if (System.IO.File.Exists(unityOutputManifestFilePath) == false) { - string unityOutputManifestFilePath = $"{pipelineOutputDirectory}/{YooAssetSettings.OutputFolderName}"; - if (System.IO.File.Exists(unityOutputManifestFilePath) == false) - { - string message = BuildLogger.GetErrorMessage(ErrorCode.UnityEngineBuildFatal, $"Not found output {nameof(AssetBundleManifest)} file : {unityOutputManifestFilePath}"); - throw new Exception(message); - } + string message = BuildLogger.GetErrorMessage(ErrorCode.UnityEngineBuildFatal, $"Not found output {nameof(AssetBundleManifest)} file : {unityOutputManifestFilePath}"); + throw new Exception(message); } BuildLogger.Log("UnityEngine build success !"); diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCopyBuildinFiles_BBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCopyBuildinFiles_BBP.cs index 807093eb..28e6c420 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCopyBuildinFiles_BBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCopyBuildinFiles_BBP.cs @@ -12,14 +12,9 @@ namespace YooAsset.Editor { var buildParametersContext = context.GetContextObject(); var manifestContext = context.GetContextObject(); - var buildMode = buildParametersContext.Parameters.BuildMode; - - if (buildMode == EBuildMode.ForceRebuild || buildMode == EBuildMode.IncrementalBuild) + if (buildParametersContext.Parameters.BuildinFileCopyOption != EBuildinFileCopyOption.None) { - if (buildParametersContext.Parameters.BuildinFileCopyOption != EBuildinFileCopyOption.None) - { - CopyBuildinFilesToStreaming(buildParametersContext, manifestContext.Manifest); - } + CopyBuildinFilesToStreaming(buildParametersContext, manifestContext.Manifest); } } } diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateManifest_BBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateManifest_BBP.cs index 32c46ea8..ea5f468c 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateManifest_BBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateManifest_BBP.cs @@ -11,7 +11,7 @@ namespace YooAsset.Editor void IBuildTask.Run(BuildContext context) { - CreateManifestFile(context); + CreateManifestFile(true, true, context); } protected override string[] GetBundleDepends(BuildContext context, string bundleName) diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreatePackage_BBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreatePackage_BBP.cs index 530b1b7f..0ef47257 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreatePackage_BBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreatePackage_BBP.cs @@ -9,17 +9,13 @@ namespace YooAsset.Editor { var buildParameters = context.GetContextObject(); var buildMapContext = context.GetContextObject(); - var buildMode = buildParameters.Parameters.BuildMode; - if (buildMode != EBuildMode.SimulateBuild && buildMode != EBuildMode.DryRunBuild) - { - CreatePackageCatalog(buildParameters, buildMapContext); - } + CreatePackagePatch(buildParameters, buildMapContext); } /// /// 拷贝补丁文件到补丁包目录 /// - private void CreatePackageCatalog(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext) + private void CreatePackagePatch(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext) { string pipelineOutputDirectory = buildParametersContext.GetPipelineOutputDirectory(); string packageOutputDirectory = buildParametersContext.GetPackageOutputDirectory(); diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateReport_BBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateReport_BBP.cs index aa363adf..0d33a3e1 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateReport_BBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateReport_BBP.cs @@ -13,12 +13,7 @@ namespace YooAsset.Editor var buildParameters = context.GetContextObject(); var buildMapContext = context.GetContextObject(); var manifestContext = context.GetContextObject(); - - var buildMode = buildParameters.Parameters.BuildMode; - if (buildMode != EBuildMode.SimulateBuild) - { - CreateReportFile(buildParameters, buildMapContext, manifestContext); - } + CreateReportFile(buildParameters, buildMapContext, manifestContext); } } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskEncryption_BBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskEncryption_BBP.cs index 02484996..cac93eeb 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskEncryption_BBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskEncryption_BBP.cs @@ -1,9 +1,4 @@ -using System; -using System.Linq; -using System.IO; -using System.Collections; -using System.Collections.Generic; - + namespace YooAsset.Editor { public class TaskEncryption_BBP : TaskEncryption, IBuildTask @@ -12,12 +7,7 @@ namespace YooAsset.Editor { var buildParameters = context.GetContextObject(); var buildMapContext = context.GetContextObject(); - - var buildMode = buildParameters.Parameters.BuildMode; - if (buildMode == EBuildMode.ForceRebuild || buildMode == EBuildMode.IncrementalBuild) - { - EncryptingBundleFiles(buildParameters, buildMapContext); - } + EncryptingBundleFiles(buildParameters, buildMapContext); } } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskGetBuildMap_BBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskGetBuildMap_BBP.cs index 68a6cc00..3e8eadf8 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskGetBuildMap_BBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskGetBuildMap_BBP.cs @@ -12,7 +12,7 @@ namespace YooAsset.Editor void IBuildTask.Run(BuildContext context) { var buildParametersContext = context.GetContextObject(); - var buildMapContext = CreateBuildMap(buildParametersContext.Parameters); + var buildMapContext = CreateBuildMap(false, buildParametersContext.Parameters); context.SetContextObject(buildMapContext); } } diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskPrepare_BBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskPrepare_BBP.cs index bcceb303..729a35e7 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskPrepare_BBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskPrepare_BBP.cs @@ -17,13 +17,42 @@ namespace YooAsset.Editor // 检测基础构建参数 buildParametersContext.CheckBuildParameters(); + // 检测是否有未保存场景 + if (EditorTools.HasDirtyScenes()) + { + string message = BuildLogger.GetErrorMessage(ErrorCode.FoundUnsavedScene, "Found unsaved scene !"); + throw new Exception(message); + } + + // 删除包裹目录 + if (buildParameters.ClearBuildCacheFiles) + { + string packageRootDirectory = buildParameters.GetPackageRootDirectory(); + if (EditorTools.DeleteDirectory(packageRootDirectory)) + { + BuildLogger.Log($"Delete package root directory: {packageRootDirectory}"); + } + } + + // 检测包裹输出目录是否存在 + string packageOutputDirectory = buildParameters.GetPackageOutputDirectory(); + if (Directory.Exists(packageOutputDirectory)) + { + string message = BuildLogger.GetErrorMessage(ErrorCode.PackageOutputDirectoryExists, $"Package outout directory exists: {packageOutputDirectory}"); + throw new Exception(message); + } + + // 如果输出目录不存在 + string pipelineOutputDirectory = buildParameters.GetPipelineOutputDirectory(); + if (EditorTools.CreateDirectory(pipelineOutputDirectory)) + { + BuildLogger.Log($"Create pipeline output directory: {pipelineOutputDirectory}"); + } + // 检测Unity版本 #if UNITY_2021_3_OR_NEWER - if (buildParameters.BuildMode != EBuildMode.SimulateBuild) - { - string warning = BuildLogger.GetErrorMessage(ErrorCode.RecommendScriptBuildPipeline, $"Starting with UnityEngine2021, recommend use script build pipeline (SBP) !"); - BuildLogger.Warning(warning); - } + string warning = BuildLogger.GetErrorMessage(ErrorCode.RecommendScriptBuildPipeline, $"Starting with UnityEngine2021, recommend use script build pipeline (SBP) !"); + BuildLogger.Warning(warning); #endif } } diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskUpdateBundleInfo_BBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskUpdateBundleInfo_BBP.cs index 5aaccfb2..96f26f6a 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskUpdateBundleInfo_BBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskUpdateBundleInfo_BBP.cs @@ -15,77 +15,45 @@ namespace YooAsset.Editor protected override string GetUnityHash(BuildBundleInfo bundleInfo, BuildContext context) { - var buildParametersContext = context.GetContextObject(); - var parameters = buildParametersContext.Parameters; - var buildMode = parameters.BuildMode; - if (buildMode == EBuildMode.DryRunBuild || buildMode == EBuildMode.SimulateBuild) + var buildResult = context.GetContextObject(); + var hash = buildResult.UnityManifest.GetAssetBundleHash(bundleInfo.BundleName); + if (hash.isValid) { - return "00000000000000000000000000000000"; //32位 + return hash.ToString(); } else { - var buildResult = context.GetContextObject(); - var hash = buildResult.UnityManifest.GetAssetBundleHash(bundleInfo.BundleName); - if (hash.isValid) - { - return hash.ToString(); - } - else - { - string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleHash, $"Not found unity bundle hash : {bundleInfo.BundleName}"); - throw new Exception(message); - } + string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleHash, $"Not found unity bundle hash : {bundleInfo.BundleName}"); + throw new Exception(message); } } protected override uint GetUnityCRC(BuildBundleInfo bundleInfo, BuildContext context) { - var buildParametersContext = context.GetContextObject(); - var parameters = buildParametersContext.Parameters; - var buildMode = parameters.BuildMode; - if (buildMode == EBuildMode.DryRunBuild || buildMode == EBuildMode.SimulateBuild) + string filePath = bundleInfo.BuildOutputFilePath; + if (BuildPipeline.GetCRCForAssetBundle(filePath, out uint crc)) { - return 0; + return crc; } else { - string filePath = bundleInfo.BuildOutputFilePath; - if (BuildPipeline.GetCRCForAssetBundle(filePath, out uint crc)) - { - return crc; - } - else - { - string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleCRC, $"Not found unity bundle crc : {bundleInfo.BundleName}"); - throw new Exception(message); - } + string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleCRC, $"Not found unity bundle crc : {bundleInfo.BundleName}"); + throw new Exception(message); } } protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) { string filePath = bundleInfo.PackageSourceFilePath; - var buildMode = buildParametersContext.Parameters.BuildMode; - if (buildMode == EBuildMode.DryRunBuild || buildMode == EBuildMode.SimulateBuild) - return GetFilePathTempHash(filePath); - else - return HashUtility.FileMD5(filePath); + return HashUtility.FileMD5(filePath); } protected override string GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) { string filePath = bundleInfo.PackageSourceFilePath; - var buildMode = buildParametersContext.Parameters.BuildMode; - if (buildMode == EBuildMode.DryRunBuild || buildMode == EBuildMode.SimulateBuild) - return "00000000"; //8位 - else - return HashUtility.FileCRC32(filePath); + return HashUtility.FileCRC32(filePath); } protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) { string filePath = bundleInfo.PackageSourceFilePath; - var buildMode = buildParametersContext.Parameters.BuildMode; - if (buildMode == EBuildMode.DryRunBuild || buildMode == EBuildMode.SimulateBuild) - return GetBundleTempSize(bundleInfo); - else - return FileUtility.GetFileSize(filePath); + return FileUtility.GetFileSize(filePath); } } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskVerifyBuildResult_BBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskVerifyBuildResult_BBP.cs index 3203ccf2..099dea9b 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskVerifyBuildResult_BBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskVerifyBuildResult_BBP.cs @@ -15,10 +15,6 @@ namespace YooAsset.Editor var buildParametersContext = context.GetContextObject(); var buildParameters = buildParametersContext.Parameters as BuiltinBuildParameters; - // 模拟构建模式下跳过验证 - if (buildParameters.BuildMode == EBuildMode.SimulateBuild) - return; - // 验证构建结果 if (buildParameters.VerifyBuildingResult) { @@ -32,15 +28,14 @@ namespace YooAsset.Editor /// private void VerifyingBuildingResult(BuildContext context, AssetBundleManifest unityManifest) { - var buildParametersContext = context.GetContextObject(); var buildMapContext = context.GetContextObject(); - string[] unityCreateBundles = unityManifest.GetAllAssetBundles(); + string[] unityBuildContent = unityManifest.GetAllAssetBundles(); - // 1. 过滤掉原生Bundle - string[] mapBundles = buildMapContext.Collection.Select(t => t.BundleName).ToArray(); + // 1. 计划内容 + string[] planningContent = buildMapContext.Collection.Select(t => t.BundleName).ToArray(); - // 2. 验证Bundle - List exceptBundleList1 = unityCreateBundles.Except(mapBundles).ToList(); + // 2. 验证差异 + List exceptBundleList1 = unityBuildContent.Except(planningContent).ToList(); if (exceptBundleList1.Count > 0) { foreach (var exceptBundle in exceptBundleList1) @@ -53,8 +48,8 @@ namespace YooAsset.Editor throw new Exception(exception); } - // 3. 验证Bundle - List exceptBundleList2 = mapBundles.Except(unityCreateBundles).ToList(); + // 3. 验证差异 + List exceptBundleList2 = planningContent.Except(unityBuildContent).ToList(); if (exceptBundleList2.Count > 0) { foreach (var exceptBundle in exceptBundleList2) diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuiltinBuildParameters.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuiltinBuildParameters.cs index da4c5380..a5b33b66 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuiltinBuildParameters.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuiltinBuildParameters.cs @@ -34,18 +34,12 @@ namespace YooAsset.Editor BuildAssetBundleOptions opt = BuildAssetBundleOptions.None; opt |= BuildAssetBundleOptions.StrictMode; //Do not allow the build to succeed if any errors are reporting during it. - if (BuildMode == EBuildMode.DryRunBuild) - { - opt |= BuildAssetBundleOptions.DryRunBuild; - return opt; - } - if (CompressOption == ECompressOption.Uncompressed) opt |= BuildAssetBundleOptions.UncompressedAssetBundle; else if (CompressOption == ECompressOption.LZ4) opt |= BuildAssetBundleOptions.ChunkBasedCompression; - if (BuildMode == EBuildMode.ForceRebuild) + if (ClearBuildCacheFiles) opt |= BuildAssetBundleOptions.ForceRebuildAssetBundle; //Force rebuild the asset bundles if (DisableWriteTypeTree) opt |= BuildAssetBundleOptions.DisableWriteTypeTree; //Do not include type information within the asset bundle (don't write type tree). diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuiltinBuildPipeline.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuiltinBuildPipeline.cs index 2ac4058a..3341a922 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuiltinBuildPipeline.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuiltinBuildPipeline.cs @@ -8,8 +8,15 @@ namespace YooAsset.Editor { public BuildResult Run(BuildParameters buildParameters, bool enableLog) { - AssetBundleBuilder builder = new AssetBundleBuilder(); - return builder.Run(buildParameters, GetDefaultBuildPipeline(), enableLog); + if (buildParameters is BuiltinBuildParameters) + { + AssetBundleBuilder builder = new AssetBundleBuilder(); + return builder.Run(buildParameters, GetDefaultBuildPipeline(), enableLog); + } + else + { + throw new Exception($"Invalid build parameter type : {buildParameters.GetType().Name}"); + } } /// diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageComparator.meta b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline.meta similarity index 77% rename from UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageComparator.meta rename to UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline.meta index 00a5cca2..0bd716d6 100644 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageComparator.meta +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c0b4ccec8007a6047aade899b4b74fcf +guid: 12f78ad22f0513c44b6037469dbd6363 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageImporter.meta b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks.meta similarity index 77% rename from UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageImporter.meta rename to UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks.meta index 0ad5c462..ad68e77e 100644 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageImporter.meta +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: fa6624433c5d8e445b1426dcdf0763ba +guid: 1138888cdba447345abb498b0c89affa folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskCreateManifest_ESBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskCreateManifest_ESBP.cs new file mode 100644 index 00000000..2ce98213 --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskCreateManifest_ESBP.cs @@ -0,0 +1,18 @@ + +using System; + +namespace YooAsset.Editor +{ + public class TaskCreateManifest_ESBP : TaskCreateManifest, IBuildTask + { + void IBuildTask.Run(BuildContext context) + { + CreateManifestFile(false, false, context); + } + + protected override string[] GetBundleDepends(BuildContext context, string bundleName) + { + return Array.Empty(); + } + } +} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/CustomPackRule.cs.meta b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskCreateManifest_ESBP.cs.meta similarity index 83% rename from UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/CustomPackRule.cs.meta rename to UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskCreateManifest_ESBP.cs.meta index 40f5ad7c..b8278be4 100644 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/CustomPackRule.cs.meta +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskCreateManifest_ESBP.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ff1eb84d9996ca1409e37f45617b1bdb +guid: 120e126cc10604c4f811c3b6377f7452 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskGetBuildMap_ESBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskGetBuildMap_ESBP.cs new file mode 100644 index 00000000..e6e22a07 --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskGetBuildMap_ESBP.cs @@ -0,0 +1,15 @@ + +using System; + +namespace YooAsset.Editor +{ + public class TaskGetBuildMap_ESBP : TaskGetBuildMap, IBuildTask + { + void IBuildTask.Run(BuildContext context) + { + var buildParametersContext = context.GetContextObject(); + var buildMapContext = CreateBuildMap(true, buildParametersContext.Parameters); + context.SetContextObject(buildMapContext); + } + } +} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/EBuildMode.cs.meta b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskGetBuildMap_ESBP.cs.meta similarity index 83% rename from UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/EBuildMode.cs.meta rename to UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskGetBuildMap_ESBP.cs.meta index 36454fcc..37d60c9c 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/EBuildMode.cs.meta +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskGetBuildMap_ESBP.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 0b6f2523a865e454d8fa3f48a2852d5a +guid: 789c337b5b82f1c438a588982dfca346 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskPrepare_ESBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskPrepare_ESBP.cs new file mode 100644 index 00000000..0ada64f0 --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskPrepare_ESBP.cs @@ -0,0 +1,17 @@ + +using System; + +namespace YooAsset.Editor +{ + public class TaskPrepare_ESBP : IBuildTask + { + void IBuildTask.Run(BuildContext context) + { + var buildParametersContext = context.GetContextObject(); + var buildParameters = buildParametersContext.Parameters; + + // 检测基础构建参数 + buildParametersContext.CheckBuildParameters(); + } + } +} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageComparator/PackageComparatorWindow.cs.meta b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskPrepare_ESBP.cs.meta similarity index 83% rename from UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageComparator/PackageComparatorWindow.cs.meta rename to UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskPrepare_ESBP.cs.meta index efc87bde..5b18d5a6 100644 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageComparator/PackageComparatorWindow.cs.meta +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskPrepare_ESBP.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6ff3c700b7f108b48998aa1630a769e1 +guid: abbe56a7120e34349b10f20956ed51a7 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskUpdateBundleInfo_ESBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskUpdateBundleInfo_ESBP.cs new file mode 100644 index 00000000..88d98a76 --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskUpdateBundleInfo_ESBP.cs @@ -0,0 +1,63 @@ + +using System.Text; +using System; + +namespace YooAsset.Editor +{ + public class TaskUpdateBundleInfo_ESBP : TaskUpdateBundleInfo, IBuildTask + { + void IBuildTask.Run(BuildContext context) + { + UpdateBundleInfo(context); + } + + protected override string GetUnityHash(BuildBundleInfo bundleInfo, BuildContext context) + { + return "00000000000000000000000000000000"; //32位 + } + protected override uint GetUnityCRC(BuildBundleInfo bundleInfo, BuildContext context) + { + return 0; + } + protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) + { + string filePath = bundleInfo.PackageSourceFilePath; + return GetFilePathTempHash(filePath); + } + protected override string GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) + { + return "00000000"; //8位 + } + protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) + { + return GetBundleTempSize(bundleInfo); + } + + private string GetFilePathTempHash(string filePath) + { + byte[] bytes = Encoding.UTF8.GetBytes(filePath); + return HashUtility.BytesMD5(bytes); + + // 注意:在文件路径的哈希值冲突的情况下,可以使用下面的方法 + //return $"{HashUtility.BytesMD5(bytes)}-{Guid.NewGuid():N}"; + } + private long GetBundleTempSize(BuildBundleInfo bundleInfo) + { + long tempSize = 0; + + var assetPaths = bundleInfo.GetAllMainAssetPaths(); + foreach (var assetPath in assetPaths) + { + long size = FileUtility.GetFileSize(assetPath); + tempSize += size; + } + + if (tempSize == 0) + { + string message = BuildLogger.GetErrorMessage(ErrorCode.BundleTempSizeIsZero, $"Bundle temp size is zero, check bundle main asset list : {bundleInfo.BundleName}"); + throw new Exception(message); + } + return tempSize; + } + } +} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageImporter/PackageImporterWindow.cs.meta b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskUpdateBundleInfo_ESBP.cs.meta similarity index 83% rename from UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageImporter/PackageImporterWindow.cs.meta rename to UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskUpdateBundleInfo_ESBP.cs.meta index cb3d4858..f39b76c8 100644 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageImporter/PackageImporterWindow.cs.meta +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/BuildTasks/TaskUpdateBundleInfo_ESBP.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 699068f8f637708409436199baa62c1f +guid: 990b41f647b80a34ab666a3b0c1ba3f6 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildParameters.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildParameters.cs new file mode 100644 index 00000000..57d2310c --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildParameters.cs @@ -0,0 +1,7 @@ + +namespace YooAsset.Editor +{ + public class EditorSimulateBuildParameters : BuildParameters + { + } +} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildParameters.cs.meta b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildParameters.cs.meta new file mode 100644 index 00000000..0e0051bc --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildParameters.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 03ea37371e6dc644cb2e6eabf9e7e2ad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildPipeline.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildPipeline.cs new file mode 100644 index 00000000..ff0ac4a7 --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildPipeline.cs @@ -0,0 +1,37 @@ + +using System.Collections.Generic; +using System; + +namespace YooAsset.Editor +{ + public class EditorSimulateBuildPipeline : IBuildPipeline + { + public BuildResult Run(BuildParameters buildParameters, bool enableLog) + { + if (buildParameters is EditorSimulateBuildParameters) + { + AssetBundleBuilder builder = new AssetBundleBuilder(); + return builder.Run(buildParameters, GetDefaultBuildPipeline(), enableLog); + } + else + { + throw new Exception($"Invalid build parameter type : {buildParameters.GetType().Name}"); + } + } + + /// + /// 获取默认的构建流程 + /// + private List GetDefaultBuildPipeline() + { + List pipeline = new List + { + new TaskPrepare_ESBP(), + new TaskGetBuildMap_ESBP(), + new TaskUpdateBundleInfo_ESBP(), + new TaskCreateManifest_ESBP() + }; + return pipeline; + } + } +} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildPipeline.cs.meta b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildPipeline.cs.meta new file mode 100644 index 00000000..8627a935 --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/EditorSimulateBuildPipeline/EditorSimulateBuildPipeline.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9caf8e4846ad8b64eb04a4d5179942ff +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskBuilding_RFBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskBuilding_RFBP.cs index cacb1df9..b307a233 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskBuilding_RFBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskBuilding_RFBP.cs @@ -10,14 +10,8 @@ namespace YooAsset.Editor void IBuildTask.Run(BuildContext context) { var buildParametersContext = context.GetContextObject(); - var buildParameters = context.GetContextObject(); var buildMapContext = context.GetContextObject(); - - var buildMode = buildParameters.Parameters.BuildMode; - if (buildMode == EBuildMode.ForceRebuild || buildMode == EBuildMode.IncrementalBuild) - { - CopyRawBundle(buildMapContext, buildParametersContext); - } + CopyRawBundle(buildMapContext, buildParametersContext); } /// diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCopyBuildinFiles_RFBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCopyBuildinFiles_RFBP.cs index 4b9148f3..037d19eb 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCopyBuildinFiles_RFBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCopyBuildinFiles_RFBP.cs @@ -13,13 +13,9 @@ namespace YooAsset.Editor var buildParametersContext = context.GetContextObject(); var buildParameters = buildParametersContext.Parameters; var manifestContext = context.GetContextObject(); - - if (buildParameters.BuildMode != EBuildMode.SimulateBuild) + if (buildParameters.BuildinFileCopyOption != EBuildinFileCopyOption.None) { - if (buildParameters.BuildinFileCopyOption != EBuildinFileCopyOption.None) - { - CopyBuildinFilesToStreaming(buildParametersContext, manifestContext.Manifest); - } + CopyBuildinFilesToStreaming(buildParametersContext, manifestContext.Manifest); } } } diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateManifest_RFBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateManifest_RFBP.cs index 4a7778af..e34dbe90 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateManifest_RFBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateManifest_RFBP.cs @@ -9,12 +9,12 @@ namespace YooAsset.Editor { void IBuildTask.Run(BuildContext context) { - CreateManifestFile(context); + CreateManifestFile(false, true, context); } protected override string[] GetBundleDepends(BuildContext context, string bundleName) { - return new string[] { }; + return Array.Empty(); } } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreatePackage_RFBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreatePackage_RFBP.cs index f8a2a3b6..65c9d5bc 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreatePackage_RFBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreatePackage_RFBP.cs @@ -9,17 +9,13 @@ namespace YooAsset.Editor { var buildParameters = context.GetContextObject(); var buildMapContext = context.GetContextObject(); - var buildMode = buildParameters.Parameters.BuildMode; - if (buildMode != EBuildMode.SimulateBuild) - { - CreatePackageCatalog(buildParameters, buildMapContext); - } + CreatePackagePatch(buildParameters, buildMapContext); } /// /// 拷贝补丁文件到补丁包目录 /// - private void CreatePackageCatalog(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext) + private void CreatePackagePatch(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext) { string packageOutputDirectory = buildParametersContext.GetPackageOutputDirectory(); BuildLogger.Log($"Start making patch package: {packageOutputDirectory}"); diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateReport_RFBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateReport_RFBP.cs index 83458c9d..10785bdd 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateReport_RFBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateReport_RFBP.cs @@ -13,12 +13,7 @@ namespace YooAsset.Editor var buildParameters = context.GetContextObject(); var buildMapContext = context.GetContextObject(); var manifestContext = context.GetContextObject(); - - var buildMode = buildParameters.Parameters.BuildMode; - if (buildMode != EBuildMode.SimulateBuild) - { - CreateReportFile(buildParameters, buildMapContext, manifestContext); - } + CreateReportFile(buildParameters, buildMapContext, manifestContext); } } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskEncryption_RFBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskEncryption_RFBP.cs new file mode 100644 index 00000000..22086fd2 --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskEncryption_RFBP.cs @@ -0,0 +1,13 @@ + +namespace YooAsset.Editor +{ + public class TaskEncryption_RFBP : TaskEncryption, IBuildTask + { + void IBuildTask.Run(BuildContext context) + { + var buildParameters = context.GetContextObject(); + var buildMapContext = context.GetContextObject(); + EncryptingBundleFiles(buildParameters, buildMapContext); + } + } +} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskEncryption_RFBP.cs.meta b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskEncryption_RFBP.cs.meta new file mode 100644 index 00000000..af54524f --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskEncryption_RFBP.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3e156139dcc25f4c9440ec3d6cb96d2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskGetBuildMap_RFBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskGetBuildMap_RFBP.cs index 88f99beb..720b9336 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskGetBuildMap_RFBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskGetBuildMap_RFBP.cs @@ -12,7 +12,7 @@ namespace YooAsset.Editor void IBuildTask.Run(BuildContext context) { var buildParametersContext = context.GetContextObject(); - var buildMapContext = CreateBuildMap(buildParametersContext.Parameters); + var buildMapContext = CreateBuildMap(true, buildParametersContext.Parameters); context.SetContextObject(buildMapContext); // 检测构建结果 diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskPrepare_RFBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskPrepare_RFBP.cs index 6c836a59..25282eee 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskPrepare_RFBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskPrepare_RFBP.cs @@ -16,23 +16,29 @@ namespace YooAsset.Editor // 检测基础构建参数 buildParametersContext.CheckBuildParameters(); - // 检测不被支持的参数 - if (buildParameters.EnableSharePackRule) + // 删除包裹目录 + if (buildParameters.ClearBuildCacheFiles) { - string message = BuildLogger.GetErrorMessage(ErrorCode.BuildPipelineNotSupportSharePackRule, $"{nameof(EBuildPipeline.RawFileBuildPipeline)} not support share pack rule !"); + string packageRootDirectory = buildParameters.GetPackageRootDirectory(); + if (EditorTools.DeleteDirectory(packageRootDirectory)) + { + BuildLogger.Log($"Delete package root directory: {packageRootDirectory}"); + } + } + + // 检测包裹输出目录是否存在 + string packageOutputDirectory = buildParameters.GetPackageOutputDirectory(); + if (Directory.Exists(packageOutputDirectory)) + { + string message = BuildLogger.GetErrorMessage(ErrorCode.PackageOutputDirectoryExists, $"Package outout directory exists: {packageOutputDirectory}"); throw new Exception(message); } - // 检测不被支持的构建模式 - if (buildParameters.BuildMode == EBuildMode.DryRunBuild) + // 如果输出目录不存在 + string pipelineOutputDirectory = buildParameters.GetPipelineOutputDirectory(); + if (EditorTools.CreateDirectory(pipelineOutputDirectory)) { - string message = BuildLogger.GetErrorMessage(ErrorCode.BuildPipelineNotSupportBuildMode, $"{nameof(EBuildPipeline.RawFileBuildPipeline)} not support {nameof(EBuildMode.DryRunBuild)} build mode !"); - throw new Exception(message); - } - if (buildParameters.BuildMode == EBuildMode.IncrementalBuild) - { - string message = BuildLogger.GetErrorMessage(ErrorCode.BuildPipelineNotSupportBuildMode, $"{nameof(EBuildPipeline.RawFileBuildPipeline)} not support {nameof(EBuildMode.IncrementalBuild)} build mode !"); - throw new Exception(message); + BuildLogger.Log($"Create pipeline output directory: {pipelineOutputDirectory}"); } } } diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskUpdateBundleInfo_RFBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskUpdateBundleInfo_RFBP.cs index ffc8571e..d68c14c8 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskUpdateBundleInfo_RFBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskUpdateBundleInfo_RFBP.cs @@ -15,18 +15,8 @@ namespace YooAsset.Editor protected override string GetUnityHash(BuildBundleInfo bundleInfo, BuildContext context) { - var buildParametersContext = context.GetContextObject(); - var parameters = buildParametersContext.Parameters; - var buildMode = parameters.BuildMode; - if (buildMode == EBuildMode.SimulateBuild) - { - return "00000000000000000000000000000000"; //32位 - } - else - { - string filePath = bundleInfo.PackageSourceFilePath; - return HashUtility.FileMD5(filePath); - } + string filePath = bundleInfo.PackageSourceFilePath; + return HashUtility.FileMD5(filePath); } protected override uint GetUnityCRC(BuildBundleInfo bundleInfo, BuildContext context) { @@ -35,29 +25,17 @@ namespace YooAsset.Editor protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) { string filePath = bundleInfo.PackageSourceFilePath; - var buildMode = buildParametersContext.Parameters.BuildMode; - if (buildMode == EBuildMode.SimulateBuild) - return GetFilePathTempHash(filePath); - else - return HashUtility.FileMD5(filePath); + return HashUtility.FileMD5(filePath); } protected override string GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) { string filePath = bundleInfo.PackageSourceFilePath; - var buildMode = buildParametersContext.Parameters.BuildMode; - if (buildMode == EBuildMode.SimulateBuild) - return "00000000"; //8位 - else - return HashUtility.FileCRC32(filePath); + return HashUtility.FileCRC32(filePath); } protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) { string filePath = bundleInfo.PackageSourceFilePath; - var buildMode = buildParametersContext.Parameters.BuildMode; - if (buildMode == EBuildMode.SimulateBuild) - return GetBundleTempSize(bundleInfo); - else - return FileUtility.GetFileSize(filePath); + return FileUtility.GetFileSize(filePath); } } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/RawFileBuildPipeline.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/RawFileBuildPipeline.cs index 78651508..8358e918 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/RawFileBuildPipeline.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/RawFileBuildPipeline.cs @@ -11,8 +11,15 @@ namespace YooAsset.Editor { public BuildResult Run(BuildParameters buildParameters, bool enableLog) { - AssetBundleBuilder builder = new AssetBundleBuilder(); - return builder.Run(buildParameters, GetDefaultBuildPipeline(), enableLog); + if (buildParameters is RawFileBuildParameters) + { + AssetBundleBuilder builder = new AssetBundleBuilder(); + return builder.Run(buildParameters, GetDefaultBuildPipeline(), enableLog); + } + else + { + throw new Exception($"Invalid build parameter type : {buildParameters.GetType().Name}"); + } } /// @@ -25,6 +32,7 @@ namespace YooAsset.Editor new TaskPrepare_RFBP(), new TaskGetBuildMap_RFBP(), new TaskBuilding_RFBP(), + new TaskEncryption_RFBP(), new TaskUpdateBundleInfo_RFBP(), new TaskCreateManifest_RFBP(), new TaskCreateReport_RFBP(), diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskBuilding_SBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskBuilding_SBP.cs index 03cbd546..e7e32ab6 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskBuilding_SBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskBuilding_SBP.cs @@ -21,18 +21,13 @@ namespace YooAsset.Editor var buildMapContext = context.GetContextObject(); var scriptableBuildParameters = buildParametersContext.Parameters as ScriptableBuildParameters; - // 模拟构建模式下跳过引擎构建 - var buildMode = buildParametersContext.Parameters.BuildMode; - if (buildMode == EBuildMode.SimulateBuild) - return; - // 构建内容 var buildContent = new BundleBuildContent(buildMapContext.GetPipelineBuilds()); // 开始构建 IBundleBuildResults buildResults; var buildParameters = scriptableBuildParameters.GetBundleBuildParameters(); - var taskList = SBPBuildTasks.Create(buildMapContext.Command.ShadersBundleName); + var taskList = SBPBuildTasks.Create(buildMapContext.Command.ShadersBundleName, null); ReturnCode exitCode = ContentPipeline.BuildAssetBundles(buildParameters, buildContent, out buildResults, taskList); if (exitCode < 0) { diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCopyBuildinFiles_SBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCopyBuildinFiles_SBP.cs index c8300642..aa95380f 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCopyBuildinFiles_SBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCopyBuildinFiles_SBP.cs @@ -12,14 +12,9 @@ namespace YooAsset.Editor { var buildParametersContext = context.GetContextObject(); var manifestContext = context.GetContextObject(); - var buildMode = buildParametersContext.Parameters.BuildMode; - - if (buildMode == EBuildMode.ForceRebuild || buildMode == EBuildMode.IncrementalBuild) + if (buildParametersContext.Parameters.BuildinFileCopyOption != EBuildinFileCopyOption.None) { - if (buildParametersContext.Parameters.BuildinFileCopyOption != EBuildinFileCopyOption.None) - { - CopyBuildinFilesToStreaming(buildParametersContext, manifestContext.Manifest); - } + CopyBuildinFilesToStreaming(buildParametersContext, manifestContext.Manifest); } } } diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateManifest_SBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateManifest_SBP.cs index df244ecf..9c3b9837 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateManifest_SBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateManifest_SBP.cs @@ -13,7 +13,7 @@ namespace YooAsset.Editor void IBuildTask.Run(BuildContext context) { - CreateManifestFile(context); + CreateManifestFile(true, true, context); } protected override string[] GetBundleDepends(BuildContext context, string bundleName) diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreatePackage_SBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreatePackage_SBP.cs index 5fa6569e..77534131 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreatePackage_SBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreatePackage_SBP.cs @@ -9,17 +9,13 @@ namespace YooAsset.Editor { var buildParameters = context.GetContextObject(); var buildMapContext = context.GetContextObject(); - var buildMode = buildParameters.Parameters.BuildMode; - if (buildMode != EBuildMode.SimulateBuild) - { - CreatePackageCatalog(buildParameters, buildMapContext); - } + CreatePackagePatch(buildParameters, buildMapContext); } /// /// 拷贝补丁文件到补丁包目录 /// - private void CreatePackageCatalog(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext) + private void CreatePackagePatch(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext) { var scriptableBuildParameters = buildParametersContext.Parameters as ScriptableBuildParameters; string pipelineOutputDirectory = buildParametersContext.GetPipelineOutputDirectory(); diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateReport_SBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateReport_SBP.cs index 5c7c8be9..fa85aa48 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateReport_SBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateReport_SBP.cs @@ -13,12 +13,7 @@ namespace YooAsset.Editor var buildParameters = context.GetContextObject(); var buildMapContext = context.GetContextObject(); var manifestContext = context.GetContextObject(); - - var buildMode = buildParameters.Parameters.BuildMode; - if (buildMode != EBuildMode.SimulateBuild) - { - CreateReportFile(buildParameters, buildMapContext, manifestContext); - } + CreateReportFile(buildParameters, buildMapContext, manifestContext); } } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskEncryption_SBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskEncryption_SBP.cs index 8b1ffae1..d520c883 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskEncryption_SBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskEncryption_SBP.cs @@ -1,9 +1,4 @@ -using System; -using System.Linq; -using System.IO; -using System.Collections; -using System.Collections.Generic; - + namespace YooAsset.Editor { public class TaskEncryption_SBP : TaskEncryption, IBuildTask @@ -12,12 +7,7 @@ namespace YooAsset.Editor { var buildParameters = context.GetContextObject(); var buildMapContext = context.GetContextObject(); - - var buildMode = buildParameters.Parameters.BuildMode; - if (buildMode == EBuildMode.ForceRebuild || buildMode == EBuildMode.IncrementalBuild) - { - EncryptingBundleFiles(buildParameters, buildMapContext); - } + EncryptingBundleFiles(buildParameters, buildMapContext); } } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskGetBuildMap_SBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskGetBuildMap_SBP.cs index 938f6070..6f118639 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskGetBuildMap_SBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskGetBuildMap_SBP.cs @@ -12,7 +12,7 @@ namespace YooAsset.Editor void IBuildTask.Run(BuildContext context) { var buildParametersContext = context.GetContextObject(); - var buildMapContext = CreateBuildMap(buildParametersContext.Parameters); + var buildMapContext = CreateBuildMap(false, buildParametersContext.Parameters); context.SetContextObject(buildMapContext); } } diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskPrepare_SBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskPrepare_SBP.cs index 0fbf3217..438c758d 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskPrepare_SBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskPrepare_SBP.cs @@ -16,17 +16,40 @@ namespace YooAsset.Editor // 检测基础构建参数 buildParametersContext.CheckBuildParameters(); - // 检测不被支持的构建模式 - if (buildParameters.BuildMode == EBuildMode.DryRunBuild) + // 检测是否有未保存场景 + if (EditorTools.HasDirtyScenes()) { - string message = BuildLogger.GetErrorMessage(ErrorCode.BuildPipelineNotSupportBuildMode, $"{nameof(EBuildPipeline.ScriptableBuildPipeline)} not support {nameof(EBuildMode.DryRunBuild)} build mode !"); + string message = BuildLogger.GetErrorMessage(ErrorCode.FoundUnsavedScene, "Found unsaved scene !"); throw new Exception(message); } - if (buildParameters.BuildMode == EBuildMode.ForceRebuild) + + // 删除包裹目录 + if (buildParameters.ClearBuildCacheFiles) { - string message = BuildLogger.GetErrorMessage(ErrorCode.BuildPipelineNotSupportBuildMode, $"{nameof(EBuildPipeline.ScriptableBuildPipeline)} not support {nameof(EBuildMode.ForceRebuild)} build mode !"); + // Deletes the build cache directory. + UnityEditor.Build.Pipeline.Utilities.BuildCache.PurgeCache(false); + + string packageRootDirectory = buildParameters.GetPackageRootDirectory(); + if (EditorTools.DeleteDirectory(packageRootDirectory)) + { + BuildLogger.Log($"Delete package root directory: {packageRootDirectory}"); + } + } + + // 检测包裹输出目录是否存在 + string packageOutputDirectory = buildParameters.GetPackageOutputDirectory(); + if (Directory.Exists(packageOutputDirectory)) + { + string message = BuildLogger.GetErrorMessage(ErrorCode.PackageOutputDirectoryExists, $"Package outout directory exists: {packageOutputDirectory}"); throw new Exception(message); } + + // 如果输出目录不存在 + string pipelineOutputDirectory = buildParameters.GetPipelineOutputDirectory(); + if (EditorTools.CreateDirectory(pipelineOutputDirectory)) + { + BuildLogger.Log($"Create pipeline output directory: {pipelineOutputDirectory}"); + } } } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskUpdateBundleInfo_SBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskUpdateBundleInfo_SBP.cs index 4cc48128..f94a716d 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskUpdateBundleInfo_SBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskUpdateBundleInfo_SBP.cs @@ -15,77 +15,45 @@ namespace YooAsset.Editor protected override string GetUnityHash(BuildBundleInfo bundleInfo, BuildContext context) { - var buildParametersContext = context.GetContextObject(); - var parameters = buildParametersContext.Parameters; - var buildMode = parameters.BuildMode; - if (buildMode == EBuildMode.SimulateBuild) + // 注意:当资源包的依赖列表发生变化的时候,ContentHash也会发生变化! + var buildResult = context.GetContextObject(); + if (buildResult.Results.BundleInfos.TryGetValue(bundleInfo.BundleName, out var value)) { - return "00000000000000000000000000000000"; //32位 + return value.Hash.ToString(); } else { - // 注意:当资源包的依赖列表发生变化的时候,ContentHash也会发生变化! - var buildResult = context.GetContextObject(); - if (buildResult.Results.BundleInfos.TryGetValue(bundleInfo.BundleName, out var value)) - { - return value.Hash.ToString(); - } - else - { - string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleHash, $"Not found unity bundle hash : {bundleInfo.BundleName}"); - throw new Exception(message); - } + string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleHash, $"Not found unity bundle hash : {bundleInfo.BundleName}"); + throw new Exception(message); } } protected override uint GetUnityCRC(BuildBundleInfo bundleInfo, BuildContext context) { - var buildParametersContext = context.GetContextObject(); - var parameters = buildParametersContext.Parameters; - var buildMode = parameters.BuildMode; - if (buildMode == EBuildMode.SimulateBuild) + var buildResult = context.GetContextObject(); + if (buildResult.Results.BundleInfos.TryGetValue(bundleInfo.BundleName, out var value)) { - return 0; + return value.Crc; } else { - var buildResult = context.GetContextObject(); - if (buildResult.Results.BundleInfos.TryGetValue(bundleInfo.BundleName, out var value)) - { - return value.Crc; - } - else - { - string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleCRC, $"Not found unity bundle crc : {bundleInfo.BundleName}"); - throw new Exception(message); - } + string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleCRC, $"Not found unity bundle crc : {bundleInfo.BundleName}"); + throw new Exception(message); } } protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) { string filePath = bundleInfo.PackageSourceFilePath; - var buildMode = buildParametersContext.Parameters.BuildMode; - if (buildMode == EBuildMode.SimulateBuild) - return GetFilePathTempHash(filePath); - else - return HashUtility.FileMD5(filePath); + return HashUtility.FileMD5(filePath); } protected override string GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) { string filePath = bundleInfo.PackageSourceFilePath; - var buildMode = buildParametersContext.Parameters.BuildMode; - if (buildMode == EBuildMode.SimulateBuild) - return "00000000"; //8位 - else - return HashUtility.FileCRC32(filePath); + return HashUtility.FileCRC32(filePath); } protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) { string filePath = bundleInfo.PackageSourceFilePath; - var buildMode = buildParametersContext.Parameters.BuildMode; - if (buildMode == EBuildMode.SimulateBuild) - return GetBundleTempSize(bundleInfo); - else - return FileUtility.GetFileSize(filePath); + return FileUtility.GetFileSize(filePath); } } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskVerifyBuildResult_SBP.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskVerifyBuildResult_SBP.cs index db6630ba..8fda913a 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskVerifyBuildResult_SBP.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskVerifyBuildResult_SBP.cs @@ -16,10 +16,6 @@ namespace YooAsset.Editor var buildParametersContext = context.GetContextObject(); var buildParameters = buildParametersContext.Parameters as ScriptableBuildParameters; - // 模拟构建模式下跳过验证 - if (buildParameters.BuildMode == EBuildMode.SimulateBuild) - return; - // 验证构建结果 if (buildParameters.VerifyBuildingResult) { @@ -33,15 +29,14 @@ namespace YooAsset.Editor /// private void VerifyingBuildingResult(BuildContext context, IBundleBuildResults buildResults) { - var buildParameters = context.GetContextObject(); var buildMapContext = context.GetContextObject(); - List unityCreateBundles = buildResults.BundleInfos.Keys.ToList(); + List unityBuildContent = buildResults.BundleInfos.Keys.ToList(); - // 1. 过滤掉原生Bundle - List expectBundles = buildMapContext.Collection.Select(t => t.BundleName).ToList(); + // 1. 计划内容 + List planningContent = buildMapContext.Collection.Select(t => t.BundleName).ToList(); - // 2. 验证Bundle - List exceptBundleList1 = unityCreateBundles.Except(expectBundles).ToList(); + // 2. 验证差异 + List exceptBundleList1 = unityBuildContent.Except(planningContent).ToList(); if (exceptBundleList1.Count > 0) { foreach (var exceptBundle in exceptBundleList1) @@ -54,8 +49,8 @@ namespace YooAsset.Editor throw new Exception(exception); } - // 3. 验证Bundle - List exceptBundleList2 = expectBundles.Except(unityCreateBundles).ToList(); + // 3. 验证差异 + List exceptBundleList2 = planningContent.Except(unityBuildContent).ToList(); if (exceptBundleList2.Count > 0) { foreach (var exceptBundle in exceptBundleList2) diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/SBPBuildTasks.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/SBPBuildTasks.cs index 7ba0d052..3314daa9 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/SBPBuildTasks.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/SBPBuildTasks.cs @@ -9,7 +9,7 @@ namespace UnityEditor.Build.Pipeline.Tasks { public static class SBPBuildTasks { - public static IList Create(string builtInShaderBundleName) + public static IList Create(string builtInShaderBundleName, string unityMonoScriptsBundleName) { var buildTasks = new List(); @@ -28,7 +28,10 @@ namespace UnityEditor.Build.Pipeline.Tasks #endif buildTasks.Add(new CalculateAssetDependencyData()); buildTasks.Add(new StripUnusedSpriteSources()); - buildTasks.Add(new CreateBuiltInShadersBundle(builtInShaderBundleName)); + if (string.IsNullOrEmpty(builtInShaderBundleName) == false) + buildTasks.Add(new CreateBuiltInShadersBundle(builtInShaderBundleName)); + if (string.IsNullOrEmpty(unityMonoScriptsBundleName) == false) + buildTasks.Add(new CreateMonoScriptBundle(unityMonoScriptsBundleName)); buildTasks.Add(new PostDependencyCallback()); // Packing diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/ScriptableBuildPipeline.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/ScriptableBuildPipeline.cs index db62db66..1e87ab90 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/ScriptableBuildPipeline.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/ScriptableBuildPipeline.cs @@ -8,8 +8,15 @@ namespace YooAsset.Editor { public BuildResult Run(BuildParameters buildParameters, bool enableLog) { - AssetBundleBuilder builder = new AssetBundleBuilder(); - return builder.Run(buildParameters, GetDefaultBuildPipeline(), enableLog); + if (buildParameters is ScriptableBuildParameters) + { + AssetBundleBuilder builder = new AssetBundleBuilder(); + return builder.Run(buildParameters, GetDefaultBuildPipeline(), enableLog); + } + else + { + throw new Exception($"Invalid build parameter type : {buildParameters.GetType().Name}"); + } } /// diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildSystem/ErrorCode.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildSystem/ErrorCode.cs index 2fb0bdb2..ed45bd00 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildSystem/ErrorCode.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildSystem/ErrorCode.cs @@ -12,9 +12,9 @@ namespace YooAsset.Editor BuildOutputRootIsNullOrEmpty = 113, BuildinFileRootIsNullOrEmpty = 114, PackageOutputDirectoryExists = 115, + BuildPipelineIsNullOrEmpty = 116, + BuildBundleTypeIsUnknown = 117, RecommendScriptBuildPipeline = 130, - BuildPipelineNotSupportBuildMode = 140, - BuildPipelineNotSupportSharePackRule = 141, // TaskGetBuildMap RemoveInvalidTags = 200, @@ -39,5 +39,6 @@ namespace YooAsset.Editor // TaskCreateManifest NotFoundUnityBundleInBuildResult = 600, FoundStrayBundle = 601, + BundleHashConflict = 602, } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/EBuildMode.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/EBuildMode.cs deleted file mode 100644 index e9393275..00000000 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/EBuildMode.cs +++ /dev/null @@ -1,29 +0,0 @@ - -namespace YooAsset.Editor -{ - /// - /// 资源包流水线的构建模式 - /// - public enum EBuildMode - { - /// - /// 强制重建模式 - /// - ForceRebuild, - - /// - /// 增量构建模式 - /// - IncrementalBuild, - - /// - /// 演练构建模式 - /// - DryRunBuild, - - /// - /// 模拟构建模式 - /// - SimulateBuild, - } -} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/EBuildPipeline.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/EBuildPipeline.cs index 85f33c02..01a70d02 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/EBuildPipeline.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/EBuildPipeline.cs @@ -6,6 +6,11 @@ namespace YooAsset.Editor /// public enum EBuildPipeline { + /// + /// 编辑器下的模拟构建管线(ESBP) + /// + EditorSimulateBuildPipeline, + /// /// 传统内置构建管线 (BBP) /// diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/IBuildPipeline.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/IBuildPipeline.cs index 85d97c0f..97b7f11e 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/IBuildPipeline.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/IBuildPipeline.cs @@ -3,6 +3,6 @@ namespace YooAsset.Editor { public interface IBuildPipeline { - public BuildResult Run(BuildParameters buildParameters, bool enableLog); + BuildResult Run(BuildParameters buildParameters, bool enableLog); } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs index c9798f0c..a25205d6 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs @@ -13,6 +13,7 @@ namespace YooAsset.Editor internal abstract class BuildPipelineViewerBase { private const int StyleWidth = 400; + private const int LabelMinWidth = 180; protected readonly string PackageName; protected readonly BuildTarget BuildTarget; @@ -27,6 +28,8 @@ namespace YooAsset.Editor private EnumField _outputNameStyleField; private EnumField _copyBuildinFileOptionField; private TextField _copyBuildinFileTagsField; + private Toggle _clearBuildCacheToggle; + private Toggle _useAssetDependencyDBToggle; public BuildPipelineViewerBase(string packageName, EBuildPipeline buildPipeline, BuildTarget buildTarget, VisualElement parent) { @@ -59,24 +62,6 @@ namespace YooAsset.Editor _buildVersionField.style.width = StyleWidth; _buildVersionField.SetValueWithoutNotify(GetDefaultPackageVersion()); - // 构建模式 - { - var buildModeContainer = Root.Q("BuildModeContainer"); - var buildMode = AssetBundleBuilderSetting.GetPackageBuildMode(PackageName, BuildPipeline); - var buildModeList = GetSupportBuildModes(); - int defaultIndex = buildModeList.FindIndex(x => x.Equals(buildMode)); - if (defaultIndex < 0) - defaultIndex = (int)(EBuildMode)buildModeList[0]; - _buildModeField = new PopupField(buildModeList, defaultIndex); - _buildModeField.label = "Build Mode"; - _buildModeField.style.width = StyleWidth; - _buildModeField.RegisterValueChangedCallback(evt => - { - AssetBundleBuilderSetting.SetPackageBuildMode(PackageName, BuildPipeline, (EBuildMode)_buildModeField.value); - }); - buildModeContainer.Add(_buildModeField); - } - // 加密方法 { var encryptionContainer = Root.Q("EncryptionContainer"); @@ -148,6 +133,35 @@ namespace YooAsset.Editor AssetBundleBuilderSetting.SetPackageBuildinFileCopyParams(PackageName, BuildPipeline, _copyBuildinFileTagsField.value); }); + // 清理构建缓存 + bool clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(PackageName, BuildPipeline); + _clearBuildCacheToggle = Root.Q("ClearBuildCache"); + _clearBuildCacheToggle.SetValueWithoutNotify(clearBuildCache); + _clearBuildCacheToggle.RegisterValueChangedCallback(evt => + { + AssetBundleBuilderSetting.SetPackageClearBuildCache(PackageName, BuildPipeline, _clearBuildCacheToggle.value); + }); + + // 使用资源依赖数据库 + bool useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(PackageName, BuildPipeline); + _useAssetDependencyDBToggle = Root.Q("UseAssetDependency"); + _useAssetDependencyDBToggle.SetValueWithoutNotify(useAssetDependencyDB); + _useAssetDependencyDBToggle.RegisterValueChangedCallback(evt => + { + AssetBundleBuilderSetting.SetPackageUseAssetDependencyDB(PackageName, BuildPipeline, _useAssetDependencyDBToggle.value); + }); + + // 对齐文本间距 + UIElementsTools.SetElementLabelMinWidth(_buildOutputField, LabelMinWidth); + UIElementsTools.SetElementLabelMinWidth(_buildVersionField, LabelMinWidth); + UIElementsTools.SetElementLabelMinWidth(_compressionField, LabelMinWidth); + UIElementsTools.SetElementLabelMinWidth(_encryptionField, LabelMinWidth); + UIElementsTools.SetElementLabelMinWidth(_outputNameStyleField, LabelMinWidth); + UIElementsTools.SetElementLabelMinWidth(_copyBuildinFileOptionField, LabelMinWidth); + UIElementsTools.SetElementLabelMinWidth(_copyBuildinFileTagsField, LabelMinWidth); + UIElementsTools.SetElementLabelMinWidth(_clearBuildCacheToggle, LabelMinWidth); + UIElementsTools.SetElementLabelMinWidth(_useAssetDependencyDBToggle, LabelMinWidth); + // 构建按钮 var buildButton = Root.Q protected abstract void ExecuteBuild(); - /// - /// 获取构建管线支持的构建模式集合 - /// - protected abstract List GetSupportBuildModes(); - /// /// 获取构建版本 /// diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.uxml b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.uxml index bc91cc66..63ce7602 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.uxml +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.uxml @@ -2,7 +2,8 @@ - + + diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipelineViewer.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipelineViewer.cs index 55fc367b..c3912426 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipelineViewer.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipelineViewer.cs @@ -22,18 +22,19 @@ namespace YooAsset.Editor /// protected override void ExecuteBuild() { - var buildMode = AssetBundleBuilderSetting.GetPackageBuildMode(PackageName, BuildPipeline); var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(PackageName, BuildPipeline); var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, BuildPipeline); var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(PackageName, BuildPipeline); var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(PackageName, BuildPipeline); + var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(PackageName, BuildPipeline); + var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(PackageName, BuildPipeline); BuiltinBuildParameters buildParameters = new BuiltinBuildParameters(); buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); buildParameters.BuildPipeline = BuildPipeline.ToString(); + buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle; buildParameters.BuildTarget = BuildTarget; - buildParameters.BuildMode = buildMode; buildParameters.PackageName = PackageName; buildParameters.PackageVersion = GetPackageVersion(); buildParameters.EnableSharePackRule = true; @@ -41,24 +42,16 @@ namespace YooAsset.Editor buildParameters.FileNameStyle = fileNameStyle; buildParameters.BuildinFileCopyOption = buildinFileCopyOption; buildParameters.BuildinFileCopyParams = buildinFileCopyParams; - buildParameters.EncryptionServices = CreateEncryptionInstance(); buildParameters.CompressOption = compressOption; + buildParameters.ClearBuildCacheFiles = clearBuildCache; + buildParameters.UseAssetDependencyDB = useAssetDependencyDB; + buildParameters.EncryptionServices = CreateEncryptionInstance(); BuiltinBuildPipeline pipeline = new BuiltinBuildPipeline(); var buildResult = pipeline.Run(buildParameters, true); if (buildResult.Success) EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory); } - - protected override List GetSupportBuildModes() - { - List buildModeList = new List(); - buildModeList.Add(EBuildMode.ForceRebuild); - buildModeList.Add(EBuildMode.IncrementalBuild); - buildModeList.Add(EBuildMode.DryRunBuild); - buildModeList.Add(EBuildMode.SimulateBuild); - return buildModeList; - } } } #endif \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs new file mode 100644 index 00000000..771da046 --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs @@ -0,0 +1,70 @@ +#if UNITY_2019_4_OR_NEWER +using System; +using System.IO; +using System.Linq; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using UnityEditor.UIElements; +using UnityEngine.UIElements; + +namespace YooAsset.Editor +{ + internal class EditorSimulateBuildPipelineViewer : BuildPipelineViewerBase + { + public EditorSimulateBuildPipelineViewer(string packageName, BuildTarget buildTarget, VisualElement parent) + : base(packageName, EBuildPipeline.RawFileBuildPipeline, buildTarget, parent) + { + var compressionField = Root.Q("Compression"); + UIElementsTools.SetElementVisible(compressionField, false); + + var encryptionContainer = Root.Q("EncryptionContainer"); + UIElementsTools.SetElementVisible(encryptionContainer, false); + + var fileNameStyleField = Root.Q("FileNameStyle"); + UIElementsTools.SetElementVisible(fileNameStyleField, false); + + var copyBuildinFileOptionField = Root.Q("CopyBuildinFileOption"); + UIElementsTools.SetElementVisible(copyBuildinFileOptionField, false); + + var copyBuildinFileParamField = Root.Q("CopyBuildinFileParam"); + UIElementsTools.SetElementVisible(copyBuildinFileParamField, false); + + var clearBuildCacheToggle = Root.Q("ClearBuildCache"); + UIElementsTools.SetElementVisible(clearBuildCacheToggle, false); + + var useAssetDependencyToggle = Root.Q("UseAssetDependency"); + UIElementsTools.SetElementVisible(useAssetDependencyToggle, false); + } + + /// + /// 执行构建 + /// + protected override void ExecuteBuild() + { + var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(PackageName, BuildPipeline); + var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, BuildPipeline); + var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(PackageName, BuildPipeline); + + EditorSimulateBuildParameters buildParameters = new EditorSimulateBuildParameters(); + buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); + buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); + buildParameters.BuildPipeline = BuildPipeline.ToString(); + buildParameters.BuildBundleType = (int)EBuildBundleType.VirtualBundle; + buildParameters.BuildTarget = BuildTarget; + buildParameters.PackageName = PackageName; + buildParameters.PackageVersion = GetPackageVersion(); + buildParameters.VerifyBuildingResult = true; + buildParameters.FileNameStyle = fileNameStyle; + buildParameters.BuildinFileCopyOption = buildinFileCopyOption; + buildParameters.BuildinFileCopyParams = buildinFileCopyParams; + buildParameters.EncryptionServices = CreateEncryptionInstance(); + + EditorSimulateBuildPipeline pipeline = new EditorSimulateBuildPipeline(); + var buildResult = pipeline.Run(buildParameters, true); + if (buildResult.Success) + EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory); + } + } +} +#endif \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs.meta b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs.meta new file mode 100644 index 00000000..e9538a8e --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 01e426f05b237b340881910d779e4c2e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipelineViewer.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipelineViewer.cs index 063869f3..1f493fd9 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipelineViewer.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipelineViewer.cs @@ -24,23 +24,26 @@ namespace YooAsset.Editor /// protected override void ExecuteBuild() { - var buildMode = AssetBundleBuilderSetting.GetPackageBuildMode(PackageName, BuildPipeline); var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(PackageName, BuildPipeline); var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, BuildPipeline); var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(PackageName, BuildPipeline); + var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(PackageName, BuildPipeline); + var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(PackageName, BuildPipeline); RawFileBuildParameters buildParameters = new RawFileBuildParameters(); buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); buildParameters.BuildPipeline = BuildPipeline.ToString(); + buildParameters.BuildBundleType = (int)EBuildBundleType.RawBundle; buildParameters.BuildTarget = BuildTarget; - buildParameters.BuildMode = buildMode; buildParameters.PackageName = PackageName; buildParameters.PackageVersion = GetPackageVersion(); buildParameters.VerifyBuildingResult = true; buildParameters.FileNameStyle = fileNameStyle; buildParameters.BuildinFileCopyOption = buildinFileCopyOption; buildParameters.BuildinFileCopyParams = buildinFileCopyParams; + buildParameters.ClearBuildCacheFiles = clearBuildCache; + buildParameters.UseAssetDependencyDB = useAssetDependencyDB; buildParameters.EncryptionServices = CreateEncryptionInstance(); RawFileBuildPipeline pipeline = new RawFileBuildPipeline(); @@ -48,14 +51,6 @@ namespace YooAsset.Editor if (buildResult.Success) EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory); } - - protected override List GetSupportBuildModes() - { - List buildModeList = new List(); - buildModeList.Add(EBuildMode.ForceRebuild); - buildModeList.Add(EBuildMode.SimulateBuild); - return buildModeList; - } } } #endif \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipelineViewer.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipelineViewer.cs index 3f878733..7b11b3ca 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipelineViewer.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipelineViewer.cs @@ -22,18 +22,19 @@ namespace YooAsset.Editor /// protected override void ExecuteBuild() { - var buildMode = AssetBundleBuilderSetting.GetPackageBuildMode(PackageName, BuildPipeline); var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(PackageName, BuildPipeline); var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, BuildPipeline); var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(PackageName, BuildPipeline); var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(PackageName, BuildPipeline); + var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(PackageName, BuildPipeline); + var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(PackageName, BuildPipeline); ScriptableBuildParameters buildParameters = new ScriptableBuildParameters(); buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); buildParameters.BuildPipeline = BuildPipeline.ToString(); + buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle; buildParameters.BuildTarget = BuildTarget; - buildParameters.BuildMode = buildMode; buildParameters.PackageName = PackageName; buildParameters.PackageVersion = GetPackageVersion(); buildParameters.EnableSharePackRule = true; @@ -41,22 +42,16 @@ namespace YooAsset.Editor buildParameters.FileNameStyle = fileNameStyle; buildParameters.BuildinFileCopyOption = buildinFileCopyOption; buildParameters.BuildinFileCopyParams = buildinFileCopyParams; - buildParameters.EncryptionServices = CreateEncryptionInstance(); buildParameters.CompressOption = compressOption; + buildParameters.ClearBuildCacheFiles = clearBuildCache; + buildParameters.UseAssetDependencyDB = useAssetDependencyDB; + buildParameters.EncryptionServices = CreateEncryptionInstance(); ScriptableBuildPipeline pipeline = new ScriptableBuildPipeline(); var buildResult = pipeline.Run(buildParameters, true); if (buildResult.Success) EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory); } - - protected override List GetSupportBuildModes() - { - List buildModeList = new List(); - buildModeList.Add(EBuildMode.IncrementalBuild); - buildModeList.Add(EBuildMode.SimulateBuild); - return buildModeList; - } } } #endif \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollector.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollector.cs index 87374888..0ecad2ca 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollector.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollector.cs @@ -140,7 +140,7 @@ namespace YooAsset.Editor public List GetAllCollectAssets(CollectCommand command, AssetBundleCollectorGroup group) { // 注意:模拟构建模式下只收集主资源 - if (command.BuildMode == EBuildMode.SimulateBuild) + if (command.SimulateBuild) { if (CollectorType != ECollectorType.MainAssetCollector) return new List(); @@ -149,7 +149,7 @@ namespace YooAsset.Editor Dictionary result = new Dictionary(1000); // 收集打包资源路径 - List findAssets =new List(); + List findAssets = new List(); if (AssetDatabase.IsValidFolder(CollectPath)) { string collectDirectory = CollectPath; @@ -218,13 +218,7 @@ namespace YooAsset.Editor string bundleName = GetBundleName(command, group, assetInfo); List assetTags = GetAssetTags(group); CollectAssetInfo collectAssetInfo = new CollectAssetInfo(CollectorType, bundleName, address, assetInfo, assetTags); - - // 注意:模拟构建模式下不需要收集依赖资源 - if (command.BuildMode == EBuildMode.SimulateBuild) - collectAssetInfo.DependAssets = new List(); - else - collectAssetInfo.DependAssets = GetAllDependencies(command, assetInfo.AssetPath); - + collectAssetInfo.DependAssets = GetAllDependencies(command, assetInfo.AssetPath); return collectAssetInfo; } @@ -272,7 +266,11 @@ namespace YooAsset.Editor } private List GetAllDependencies(CollectCommand command, string mainAssetPath) { - string[] depends = AssetDatabase.GetDependencies(mainAssetPath, true); + // 注意:模拟构建模式下不需要收集依赖资源 + if (command.SimulateBuild) + return new List(); + + string[] depends = command.AssetDependency.GetDependencies(mainAssetPath, true); List result = new List(depends.Length); foreach (string assetPath in depends) { diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorGroup.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorGroup.cs index c4c5bb6e..ac96acc6 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorGroup.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorGroup.cs @@ -46,7 +46,7 @@ namespace YooAsset.Editor // 检测分组是否激活 IActiveRule activeRule = AssetBundleCollectorSettingData.GetActiveRuleInstance(ActiveRuleName); - if (activeRule.IsActiveGroup() == false) + if (activeRule.IsActiveGroup(new GroupData(GroupName)) == false) return; foreach (var collector in Collectors) @@ -80,7 +80,7 @@ namespace YooAsset.Editor // 检测分组是否激活 IActiveRule activeRule = AssetBundleCollectorSettingData.GetActiveRuleInstance(ActiveRuleName); - if (activeRule.IsActiveGroup() == false) + if (activeRule.IsActiveGroup(new GroupData(GroupName)) == false) { return new List(); } diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorSetting.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorSetting.cs index 2e468223..ee0dec16 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorSetting.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorSetting.cs @@ -89,7 +89,7 @@ namespace YooAsset.Editor /// /// 获取包裹收集的资源文件 /// - public CollectResult GetPackageAssets(EBuildMode buildMode, string packageName) + public CollectResult GetPackageAssets(bool simulateBuild, bool useAssetDependencyDB, string packageName) { if (string.IsNullOrEmpty(packageName)) throw new Exception("Build package name is null or empty !"); @@ -100,7 +100,7 @@ namespace YooAsset.Editor // 创建资源收集命令 IIgnoreRule ignoreRule = AssetBundleCollectorSettingData.GetIgnoreRuleInstance(package.IgnoreRuleName); - CollectCommand command = new CollectCommand(buildMode, packageName, + CollectCommand command = new CollectCommand(simulateBuild, useAssetDependencyDB, packageName, package.EnableAddressable, package.LocationToLower, package.IncludeAssetGUID, diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorSettingData.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorSettingData.cs index c0c41a25..019cfef4 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorSettingData.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorSettingData.cs @@ -23,7 +23,7 @@ namespace YooAsset.Editor private static readonly Dictionary _cacheIgnoreRuleTypes = new Dictionary(); private static readonly Dictionary _cacheIgnoreRuleInstance = new Dictionary(); - + /// /// 配置数据是否被修改 /// @@ -201,7 +201,6 @@ namespace YooAsset.Editor public static void ClearAll() { Setting.ClearAll(); - SaveFile(); } public static List GetActiveRuleNames() @@ -275,23 +274,23 @@ namespace YooAsset.Editor public static bool HasActiveRuleName(string ruleName) { - return _cacheActiveRuleTypes.Keys.Contains(ruleName); + return _cacheActiveRuleTypes.ContainsKey(ruleName); } public static bool HasAddressRuleName(string ruleName) { - return _cacheAddressRuleTypes.Keys.Contains(ruleName); + return _cacheAddressRuleTypes.ContainsKey(ruleName); } public static bool HasPackRuleName(string ruleName) { - return _cachePackRuleTypes.Keys.Contains(ruleName); + return _cachePackRuleTypes.ContainsKey(ruleName); } public static bool HasFilterRuleName(string ruleName) { - return _cacheFilterRuleTypes.Keys.Contains(ruleName); + return _cacheFilterRuleTypes.ContainsKey(ruleName); } public static bool HasIgnoreRuleName(string ruleName) { - return _cacheIgnoreRuleTypes.Keys.Contains(ruleName); + return _cacheIgnoreRuleTypes.ContainsKey(ruleName); } public static IActiveRule GetActiveRuleInstance(string ruleName) diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorWindow.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorWindow.cs index f4691727..aadcb357 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorWindow.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetBundleCollectorWindow.cs @@ -42,7 +42,7 @@ namespace YooAsset.Editor private Toggle _includeAssetGUIDToogle; private Toggle _autoCollectShadersToogle; private PopupField _ignoreRulePopupField; - + private VisualElement _packageContainer; private ListView _packageListView; private TextField _packageNameTxt; @@ -172,10 +172,10 @@ namespace YooAsset.Editor _ignoreRulePopupField.style.width = 300; _ignoreRulePopupField.formatListItemCallback = FormatListItemCallback; _ignoreRulePopupField.formatSelectedValueCallback = FormatSelectedValueCallback; - _ignoreRulePopupField.RegisterValueChangedCallback(evt => + _ignoreRulePopupField.RegisterValueChangedCallback(evt => { var selectPackage = _packageListView.selectedItem as AssetBundleCollectorPackage; - if(selectPackage != null) + if (selectPackage != null) { selectPackage.IgnoreRuleName = evt.newValue.ClassName; AssetBundleCollectorSettingData.ModifyPackage(selectPackage); @@ -205,7 +205,9 @@ namespace YooAsset.Editor _packageListView = root.Q("PackageListView"); _packageListView.makeItem = MakePackageListViewItem; _packageListView.bindItem = BindPackageListViewItem; -#if UNITY_2020_1_OR_NEWER +#if UNITY_2022_3_OR_NEWER + _packageListView.selectionChanged += PackageListView_onSelectionChange; +#elif UNITY_2020_1_OR_NEWER _packageListView.onSelectionChange += PackageListView_onSelectionChange; #else _packageListView.onSelectionChanged += PackageListView_onSelectionChange; @@ -250,7 +252,9 @@ namespace YooAsset.Editor _groupListView = root.Q("GroupListView"); _groupListView.makeItem = MakeGroupListViewItem; _groupListView.bindItem = BindGroupListViewItem; -#if UNITY_2020_1_OR_NEWER +#if UNITY_2022_3_OR_NEWER + _groupListView.selectionChanged += GroupListView_onSelectionChange; +#elif UNITY_2020_1_OR_NEWER _groupListView.onSelectionChange += GroupListView_onSelectionChange; #else _groupListView.onSelectionChanged += GroupListView_onSelectionChange; @@ -657,7 +661,7 @@ namespace YooAsset.Editor // 激活状态 IActiveRule activeRule = AssetBundleCollectorSettingData.GetActiveRuleInstance(group.ActiveRuleName); - bool isActive = activeRule.IsActiveGroup(); + bool isActive = activeRule.IsActiveGroup(new GroupData(group.GroupName)); textField1.SetEnabled(isActive); } private void GroupListView_onSelectionChange(IEnumerable objs) @@ -991,7 +995,7 @@ namespace YooAsset.Editor try { IIgnoreRule ignoreRule = AssetBundleCollectorSettingData.GetIgnoreRuleInstance(_ignoreRulePopupField.value.ClassName); - CollectCommand command = new CollectCommand(EBuildMode.SimulateBuild, + CollectCommand command = new CollectCommand(true, false, _packageNameTxt.value, _enableAddressableToogle.value, _locationToLowerToogle.value, diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetDependencyCache.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetDependencyCache.cs new file mode 100644 index 00000000..6da69a2d --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetDependencyCache.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using UnityEditor; +using UnityEngine; + +namespace YooAsset.Editor +{ + public class AssetDependencyCache + { + private readonly AssetDependencyDatabase _database; + + /// + /// 初始化资源依赖缓存系统 + /// + public AssetDependencyCache(bool useAssetDependencyDB) + { + if (useAssetDependencyDB) + Debug.Log("Use asset dependency database !"); + + string databaseFilePath = "Library/AssetDependencyDB"; + _database = new AssetDependencyDatabase(); + _database.CreateDatabase(useAssetDependencyDB, databaseFilePath); + + if (useAssetDependencyDB) + { + _database.SaveDatabase(); + } + } + + /// + /// 获取资源的依赖列表 + /// + /// 资源路径 + /// 递归查找所有依赖 + /// 返回依赖的资源路径集合 + public string[] GetDependencies(string assetPath, bool recursive = true) + { + // 通过本地缓存获取依赖关系 + return _database.GetDependencies(assetPath, recursive); + + // 通过Unity引擎获取依赖关系 + //return AssetDatabase.GetDependencies(assetPath, recursive); + } + } +} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetDependencyCache.cs.meta b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetDependencyCache.cs.meta new file mode 100644 index 00000000..e1fe7be7 --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetDependencyCache.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ddc7e04182c802b468e038777e4dd442 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetDependencyDatabase.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetDependencyDatabase.cs new file mode 100644 index 00000000..50aea16c --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetDependencyDatabase.cs @@ -0,0 +1,240 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using UnityEditor; +using UnityEngine; + +namespace YooAsset.Editor +{ + /// + /// 资源依赖数据库 + /// + public class AssetDependencyDatabase + { + private const string FILE_VERSION = "1.0"; + + private class DependencyInfo + { + /// + /// 此哈希函数会聚合了以下内容:源资源路径、源资源、元文件、目标平台以及导入器版本。 + /// 如果此哈希值发送变化,则说明导入资源可能已更改,因此应重新搜集依赖关系。 + /// + public string DependHash; + + /// + /// 直接依赖资源的GUID列表 + /// + public List DependGUIDs = new List(); + } + + private string _databaseFilePath; + private readonly Dictionary _database = new Dictionary(100000); + + /// + /// 创建缓存数据库 + /// + public void CreateDatabase(bool readCacheDatabaseFile, string databaseFilePath) + { + _databaseFilePath = databaseFilePath; + _database.Clear(); + + try + { + if (readCacheDatabaseFile && File.Exists(databaseFilePath)) + { + // 解析缓存文件 + using var stream = File.OpenRead(databaseFilePath); + using var reader = new BinaryReader(stream); + string fileVersion = reader.ReadString(); + if (fileVersion != FILE_VERSION) + throw new Exception("The database file version not match !"); + + var count = reader.ReadInt32(); + for (int i = 0; i < count; i++) + { + var assetPath = reader.ReadString(); + var cacheInfo = new DependencyInfo + { + DependHash = reader.ReadString(), + DependGUIDs = ReadStringList(reader), + }; + _database.Add(assetPath, cacheInfo); + } + + // 移除无效资源 + List removeList = new List(10000); + foreach (var cacheInfoPair in _database) + { + var assetPath = cacheInfoPair.Key; + var assetGUID = AssetDatabase.AssetPathToGUID(assetPath); + if (string.IsNullOrEmpty(assetGUID)) + { + removeList.Add(assetPath); + } + } + foreach (var assetPath in removeList) + { + _database.Remove(assetPath); + } + } + } + catch (Exception ex) + { + ClearDatabase(true); + Debug.LogError($"Failed to load cache database : {ex.Message}"); + } + + // 查找新增或变动资源 + var allAssetPaths = AssetDatabase.GetAllAssetPaths(); + foreach (var assetPath in allAssetPaths) + { + if (_database.TryGetValue(assetPath, out DependencyInfo cacheInfo)) + { + var dependHash = AssetDatabase.GetAssetDependencyHash(assetPath); + if (dependHash.ToString() != cacheInfo.DependHash) + { + _database[assetPath] = CreateDependencyInfo(assetPath); + } + } + else + { + var newCacheInfo = CreateDependencyInfo(assetPath); + _database.Add(assetPath, newCacheInfo); + } + } + } + + /// + /// 保存缓存数据库 + /// + public void SaveDatabase() + { + if (File.Exists(_databaseFilePath)) + File.Delete(_databaseFilePath); + + try + { + using var stream = File.Create(_databaseFilePath); + using var writer = new BinaryWriter(stream); + writer.Write(FILE_VERSION); + writer.Write(_database.Count); + foreach (var assetPair in _database) + { + string assetPath = assetPair.Key; + var assetInfo = assetPair.Value; + writer.Write(assetPath); + writer.Write(assetInfo.DependHash); + WriteStringList(writer, assetInfo.DependGUIDs); + } + writer.Flush(); + } + catch (Exception ex) + { + Debug.LogError($"Failed to save cache database : {ex.Message}"); + } + } + + /// + /// 清理缓存数据库 + /// + public void ClearDatabase(bool deleteDatabaseFile) + { + if (deleteDatabaseFile) + { + if (File.Exists(_databaseFilePath)) + File.Delete(_databaseFilePath); + } + + _database.Clear(); + } + + /// + /// 获取资源的依赖列表 + /// + public string[] GetDependencies(string assetPath, bool recursive) + { + // 注意:AssetDatabase.GetDependencies()方法返回结果里会踢出丢失文件! + // 注意:AssetDatabase.GetDependencies()方法返回结果里会包含主资源路径! + + // 注意:机制上不允许存在未收录的资源 + if (_database.ContainsKey(assetPath) == false) + { + throw new Exception($"Fatal : can not found cache info : {assetPath}"); + } + + var result = new HashSet { assetPath }; + CollectDependencies(assetPath, result, recursive); + + // 注意:AssetDatabase.GetDependencies保持一致,将主资源添加到依赖列表最前面 + return result.ToArray(); + } + private void CollectDependencies(string assetPath, HashSet result, bool recursive) + { + if (_database.TryGetValue(assetPath, out var cacheInfo) == false) + { + throw new Exception($"Fatal : can not found cache info : {assetPath}"); + } + + foreach (var dependGUID in cacheInfo.DependGUIDs) + { + string dependAssetPath = AssetDatabase.GUIDToAssetPath(dependGUID); + if (string.IsNullOrEmpty(dependAssetPath)) + continue; + + // 如果是文件夹资源 + if (AssetDatabase.IsValidFolder(dependAssetPath)) + continue; + + // 如果已经收集过 + if (result.Contains(dependAssetPath)) + continue; + + result.Add(dependAssetPath); + + // 递归收集依赖 + if (recursive) + CollectDependencies(dependAssetPath, result, recursive); + } + } + + private List ReadStringList(BinaryReader reader) + { + var count = reader.ReadInt32(); + var values = new List(count); + for (int i = 0; i < count; i++) + { + values.Add(reader.ReadString()); + } + return values; + } + private void WriteStringList(BinaryWriter writer, List values) + { + writer.Write(values.Count); + foreach (var value in values) + { + writer.Write(value); + } + } + private DependencyInfo CreateDependencyInfo(string assetPath) + { + var dependHash = AssetDatabase.GetAssetDependencyHash(assetPath); + var dependAssetPaths = AssetDatabase.GetDependencies(assetPath, false); + var dependGUIDs = new List(); + foreach (var dependAssetPath in dependAssetPaths) + { + string guid = AssetDatabase.AssetPathToGUID(dependAssetPath); + if (string.IsNullOrEmpty(guid) == false) + { + dependGUIDs.Add(guid); + } + } + + var cacheInfo = new DependencyInfo(); + cacheInfo.DependHash = dependHash.ToString(); + cacheInfo.DependGUIDs = dependGUIDs; + return cacheInfo; + } + } +} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetDependencyDatabase.cs.meta b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetDependencyDatabase.cs.meta new file mode 100644 index 00000000..e48d3471 --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/AssetDependencyDatabase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 38f3f2338cca06a42a0f845df9fbb563 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/CollectCommand.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/CollectCommand.cs index dd2a206f..491b57a3 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/CollectCommand.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/CollectCommand.cs @@ -4,10 +4,15 @@ namespace YooAsset.Editor public class CollectCommand { /// - /// 构建模式 + /// 模拟构建模式 /// - public EBuildMode BuildMode { private set; get; } + public bool SimulateBuild { private set; get; } + /// + /// 使用资源依赖数据库 + /// + public bool UseAssetDependencyDB { private set; get; } + /// /// 包裹名称 /// @@ -49,11 +54,12 @@ namespace YooAsset.Editor public IIgnoreRule IgnoreRule { private set; get; } - public CollectCommand(EBuildMode buildMode, string packageName, - bool enableAddressable, bool locationToLower, bool includeAssetGUID, + public CollectCommand(bool simulateBuild, bool useAssetDependencyDB, string packageName, + bool enableAddressable, bool locationToLower, bool includeAssetGUID, bool autoCollectShaders, bool uniqueBundleName, IIgnoreRule ignoreRule) { - BuildMode = buildMode; + SimulateBuild = simulateBuild; + UseAssetDependencyDB = useAssetDependencyDB; PackageName = packageName; EnableAddressable = enableAddressable; LocationToLower = locationToLower; @@ -66,5 +72,16 @@ namespace YooAsset.Editor var packRuleResult = DefaultPackRule.CreateShadersPackRuleResult(); ShadersBundleName = packRuleResult.GetBundleName(packageName, uniqueBundleName); } + + private AssetDependencyCache _assetDependency; + public AssetDependencyCache AssetDependency + { + get + { + if (_assetDependency == null) + _assetDependency = new AssetDependencyCache(UseAssetDependencyDB); + return _assetDependency; + } + } } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/CollectRules/IActiveRule.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/CollectRules/IActiveRule.cs index 2691ec36..99101dbf 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/CollectRules/IActiveRule.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/CollectRules/IActiveRule.cs @@ -1,6 +1,16 @@  namespace YooAsset.Editor { + public struct GroupData + { + public string GroupName; + + public GroupData(string groupName) + { + GroupName = groupName; + } + } + /// /// 资源分组激活规则接口 /// @@ -9,6 +19,6 @@ namespace YooAsset.Editor /// /// 是否激活分组 /// - bool IsActiveGroup(); + bool IsActiveGroup(GroupData data); } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultActiveRule.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultActiveRule.cs index 2f0f103d..87b8f736 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultActiveRule.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultActiveRule.cs @@ -4,7 +4,7 @@ namespace YooAsset.Editor [DisplayName("启用分组")] public class EnableGroup : IActiveRule { - public bool IsActiveGroup() + public bool IsActiveGroup(GroupData data) { return true; } @@ -13,7 +13,7 @@ namespace YooAsset.Editor [DisplayName("禁用分组")] public class DisableGroup : IActiveRule { - public bool IsActiveGroup() + public bool IsActiveGroup(GroupData data) { return false; } diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultFilterRule.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultFilterRule.cs index bd4fccb3..e1eb3b67 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultFilterRule.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultFilterRule.cs @@ -20,7 +20,8 @@ namespace YooAsset.Editor { public bool IsCollectAsset(FilterRuleData data) { - return Path.GetExtension(data.AssetPath) == ".unity"; + string extension = Path.GetExtension(data.AssetPath); + return extension == ".unity" || extension == ".scene"; } } diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultIgnoreRule.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultIgnoreRule.cs index f516e782..36172444 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultIgnoreRule.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultIgnoreRule.cs @@ -33,6 +33,14 @@ namespace YooAsset.Editor if (AssetDatabase.IsValidFolder(assetInfo.AssetPath)) return true; + // 忽略编辑器图标资源 + if (assetInfo.AssetPath.Contains("/Gizmos/")) + return true; + + // 忽略编辑器专属资源 + if (assetInfo.AssetPath.Contains("/Editor/") || assetInfo.AssetPath.Contains("/Editor Resources/")) + return true; + // 忽略编辑器下的类型资源 if (assetInfo.AssetType == typeof(LightingDataAsset)) return true; diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultPackRule.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultPackRule.cs index 80960a57..0e13fbcf 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultPackRule.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleCollector/DefaultRules/DefaultPackRule.cs @@ -147,6 +147,22 @@ namespace YooAsset.Editor } } + /// + /// 打包视频文件 + /// + [DisplayName("打包视频文件")] + public class PackVideoFile : IPackRule + { + PackRuleResult IPackRule.GetPackRuleResult(PackRuleData data) + { + string bundleName = data.AssetPath; + string fileExtension = Path.GetExtension(data.AssetPath); + fileExtension = fileExtension.Remove(0, 1); + PackRuleResult result = new PackRuleResult(bundleName, fileExtension); + return result; + } + } + /// /// 打包着色器 /// diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleDebugger/VisualViewers/DebuggerAssetListViewer.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleDebugger/VisualViewers/DebuggerAssetListViewer.cs index 9765b597..674884ff 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleDebugger/VisualViewers/DebuggerAssetListViewer.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleDebugger/VisualViewers/DebuggerAssetListViewer.cs @@ -35,7 +35,9 @@ namespace YooAsset.Editor _assetListView = _root.Q("TopListView"); _assetListView.makeItem = MakeAssetListViewItem; _assetListView.bindItem = BindAssetListViewItem; -#if UNITY_2020_1_OR_NEWER +#if UNITY_2022_3_OR_NEWER + _assetListView.selectionChanged += AssetListView_onSelectionChange; +#elif UNITY_2020_1_OR_NEWER _assetListView.onSelectionChange += AssetListView_onSelectionChange; #else _assetListView.onSelectionChanged += AssetListView_onSelectionChange; diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleDebugger/VisualViewers/DebuggerBundleListViewer.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleDebugger/VisualViewers/DebuggerBundleListViewer.cs index 089bec7d..8966a25a 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleDebugger/VisualViewers/DebuggerBundleListViewer.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleDebugger/VisualViewers/DebuggerBundleListViewer.cs @@ -35,7 +35,9 @@ namespace YooAsset.Editor _bundleListView = _root.Q("TopListView"); _bundleListView.makeItem = MakeBundleListViewItem; _bundleListView.bindItem = BindBundleListViewItem; -#if UNITY_2020_1_OR_NEWER +#if UNITY_2022_3_OR_NEWER + _bundleListView.selectionChanged += BundleListView_onSelectionChange; +#elif UNITY_2020_1_OR_NEWER _bundleListView.onSelectionChange += BundleListView_onSelectionChange; #else _bundleListView.onSelectionChanged += BundleListView_onSelectionChange; @@ -189,7 +191,7 @@ namespace YooAsset.Editor // Status StyleColor textColor; - if (bundleInfo.Status == BundleLoaderBase.EStatus.Failed.ToString()) + if (bundleInfo.Status == EOperationStatus.Failed) textColor = new StyleColor(Color.yellow); else textColor = label1.style.color; diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/AssetBundleReporterWindow.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/AssetBundleReporterWindow.cs index c95c149e..dd5aacda 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/AssetBundleReporterWindow.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/AssetBundleReporterWindow.cs @@ -104,7 +104,7 @@ namespace YooAsset.Editor private void ImportBtn_onClick() { - string selectFilePath = EditorUtility.OpenFilePanel("导入报告", EditorTools.GetProjectPath(), "json"); + string selectFilePath = EditorUtility.OpenFilePanel("导入报告", EditorTools.GetProjectPath(), "report"); if (string.IsNullOrEmpty(selectFilePath)) return; diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/ReportSummary.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/ReportSummary.cs index 1bc382d4..fc54f651 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/ReportSummary.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/ReportSummary.cs @@ -33,16 +33,16 @@ namespace YooAsset.Editor /// public BuildTarget BuildTarget; - /// - /// 构建模式 - /// - public EBuildMode BuildMode; - /// /// 构建管线 /// public string BuildPipeline; + /// + /// 构建的资源包类型 + /// + public int BuildBundleType; + /// /// 构建包裹名称 /// @@ -53,6 +53,11 @@ namespace YooAsset.Editor /// public string BuildPackageVersion; + /// + /// 构建包裹备注 + /// + public string BuildPackageNote; + // 收集器配置 public bool UniqueBundleName; public bool EnableAddressable; @@ -62,6 +67,8 @@ namespace YooAsset.Editor public string IgnoreRuleName; // 构建参数 + public bool ClearBuildCacheFiles; + public bool UseAssetDependencyDB; public bool EnableSharePackRule; public string EncryptionClassName; public EFileNameStyle FileNameStyle; diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/VisualViewers/ReporterAssetListViewer.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/VisualViewers/ReporterAssetListViewer.cs index 912a3021..f59e8849 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/VisualViewers/ReporterAssetListViewer.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/VisualViewers/ReporterAssetListViewer.cs @@ -58,7 +58,9 @@ namespace YooAsset.Editor _assetListView = _root.Q("TopListView"); _assetListView.makeItem = MakeAssetListViewItem; _assetListView.bindItem = BindAssetListViewItem; -#if UNITY_2020_1_OR_NEWER +#if UNITY_2022_3_OR_NEWER + _assetListView.selectionChanged += AssetListView_onSelectionChange; +#elif UNITY_2020_1_OR_NEWER _assetListView.onSelectionChange += AssetListView_onSelectionChange; #else _assetListView.onSelectionChanged += AssetListView_onSelectionChange; diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/VisualViewers/ReporterBundleListViewer.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/VisualViewers/ReporterBundleListViewer.cs index 78bfe240..d82faaa5 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/VisualViewers/ReporterBundleListViewer.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/VisualViewers/ReporterBundleListViewer.cs @@ -66,7 +66,9 @@ namespace YooAsset.Editor _bundleListView = _root.Q("TopListView"); _bundleListView.makeItem = MakeBundleListViewItem; _bundleListView.bindItem = BindBundleListViewItem; -#if UNITY_2020_1_OR_NEWER +#if UNITY_2022_3_OR_NEWER + _bundleListView.selectionChanged += BundleListView_onSelectionChange; +#elif UNITY_2020_1_OR_NEWER _bundleListView.onSelectionChange += BundleListView_onSelectionChange; #else _bundleListView.onSelectionChanged += BundleListView_onSelectionChange; diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/VisualViewers/ReporterSummaryViewer.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/VisualViewers/ReporterSummaryViewer.cs index 7142dec2..168c5e6b 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/VisualViewers/ReporterSummaryViewer.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleReporter/VisualViewers/ReporterSummaryViewer.cs @@ -62,9 +62,10 @@ namespace YooAsset.Editor _items.Add(new ItemWrapper("Build Seconds", ConvertTime(buildReport.Summary.BuildSeconds))); _items.Add(new ItemWrapper("Build Target", $"{buildReport.Summary.BuildTarget}")); _items.Add(new ItemWrapper("Build Pipeline", $"{buildReport.Summary.BuildPipeline}")); - _items.Add(new ItemWrapper("Build Mode", $"{buildReport.Summary.BuildMode}")); + _items.Add(new ItemWrapper("Build Bundle Type", buildReport.Summary.BuildBundleType.ToString())); _items.Add(new ItemWrapper("Package Name", buildReport.Summary.BuildPackageName)); _items.Add(new ItemWrapper("Package Version", buildReport.Summary.BuildPackageVersion)); + _items.Add(new ItemWrapper("Package Note", buildReport.Summary.BuildPackageNote)); _items.Add(new ItemWrapper(string.Empty, string.Empty)); _items.Add(new ItemWrapper("Collect Settings", string.Empty)); @@ -77,6 +78,8 @@ namespace YooAsset.Editor _items.Add(new ItemWrapper(string.Empty, string.Empty)); _items.Add(new ItemWrapper("Build Params", string.Empty)); + _items.Add(new ItemWrapper("Clear Build Cache Files", $"{buildReport.Summary.ClearBuildCacheFiles}")); + _items.Add(new ItemWrapper("Use Asset Dependency DB", $"{buildReport.Summary.UseAssetDependencyDB}")); _items.Add(new ItemWrapper("Enable Share Pack Rule", $"{buildReport.Summary.EnableSharePackRule}")); _items.Add(new ItemWrapper("Encryption Class Name", buildReport.Summary.EncryptionClassName)); _items.Add(new ItemWrapper("FileNameStyle", $"{buildReport.Summary.FileNameStyle}")); diff --git a/UnityProject/Packages/YooAsset/Editor/Common/AssetInfo.cs b/UnityProject/Packages/YooAsset/Editor/Common/AssetInfo.cs index e0cc325b..f9642ebd 100644 --- a/UnityProject/Packages/YooAsset/Editor/Common/AssetInfo.cs +++ b/UnityProject/Packages/YooAsset/Editor/Common/AssetInfo.cs @@ -42,6 +42,12 @@ namespace YooAsset.Editor AssetPath = assetPath; AssetGUID = UnityEditor.AssetDatabase.AssetPathToGUID(AssetPath); AssetType = UnityEditor.AssetDatabase.GetMainAssetTypeAtPath(AssetPath); + + // 注意:如果资源文件损坏或者实例化关联脚本丢失,获取的资源类型会无效! + if (AssetType == null) + { + throw new Exception($"Found invalid asset : {AssetPath}"); + } } /// diff --git a/UnityProject/Packages/YooAsset/Editor/EditorTools.cs b/UnityProject/Packages/YooAsset/Editor/EditorTools.cs index 03fbc34a..9f060726 100644 --- a/UnityProject/Packages/YooAsset/Editor/EditorTools.cs +++ b/UnityProject/Packages/YooAsset/Editor/EditorTools.cs @@ -559,6 +559,21 @@ namespace YooAsset.Editor { return path.Replace('\\', '/').Replace("\\", "/"); //替换为Linux路径格式 } + + /// + /// 移除路径里的后缀名 + /// + public static string RemoveExtension(string str) + { + if (string.IsNullOrEmpty(str)) + return str; + + int index = str.LastIndexOf('.'); + if (index == -1) + return str; + else + return str.Remove(index); //"assets/config/test.unity3d" --> "assets/config/test" + } /// /// 获取项目工程路径 diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/CustomPackRule.cs b/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/CustomPackRule.cs deleted file mode 100644 index dc3c5a88..00000000 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/CustomPackRule.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using UnityEngine; -using YooAsset.Editor; - -[DisplayName("打包特效纹理(自定义)")] -public class PackEffectTexture : IPackRule -{ - private const string PackDirectory = "Assets/Effect/Textures/"; - - PackRuleResult IPackRule.GetPackRuleResult(PackRuleData data) - { - string assetPath = data.AssetPath; - if (assetPath.StartsWith(PackDirectory) == false) - throw new Exception($"Only support folder : {PackDirectory}"); - - string assetName = Path.GetFileName(assetPath).ToLower(); - string firstChar = assetName.Substring(0, 1); - string bundleName = $"{PackDirectory}effect_texture_{firstChar}"; - var packRuleResult = new PackRuleResult(bundleName, DefaultPackRule.AssetBundleFileExtension); - return packRuleResult; - } -} - -[DisplayName("打包视频(自定义)")] -public class PackVideo : IPackRule -{ - public PackRuleResult GetPackRuleResult(PackRuleData data) - { - string bundleName = RemoveExtension(data.AssetPath); - string fileExtension = Path.GetExtension(data.AssetPath); - fileExtension = fileExtension.Remove(0, 1); - PackRuleResult result = new PackRuleResult(bundleName, fileExtension); - return result; - } - - private string RemoveExtension(string str) - { - if (string.IsNullOrEmpty(str)) - return str; - - int index = str.LastIndexOf("."); - if (index == -1) - return str; - else - return str.Remove(index); //"assets/config/test.unity3d" --> "assets/config/test" - } -} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageComparator/PackageComparatorWindow.cs b/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageComparator/PackageComparatorWindow.cs deleted file mode 100644 index 3cc3cf94..00000000 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageComparator/PackageComparatorWindow.cs +++ /dev/null @@ -1,138 +0,0 @@ -using System.IO; -using System.Collections.Generic; -using System.Linq; -using UnityEngine; -using UnityEditor; - -namespace YooAsset.Editor -{ - public class PackageComparatorWindow : EditorWindow - { - static PackageComparatorWindow _thisInstance; - - [MenuItem("YooAsset/Extension/补丁包比对工具", false, 102)] - static void ShowWindow() - { - if (_thisInstance == null) - { - _thisInstance = EditorWindow.GetWindow(typeof(PackageComparatorWindow), false, "补丁包比对工具", true) as PackageComparatorWindow; - _thisInstance.minSize = new Vector2(800, 600); - } - _thisInstance.Show(); - } - - private string _manifestPath1 = string.Empty; - private string _manifestPath2 = string.Empty; - private readonly List _changeList = new List(); - private readonly List _newList = new List(); - private Vector2 _scrollPos1; - private Vector2 _scrollPos2; - - private void OnGUI() - { - GUILayout.Space(10); - EditorGUILayout.BeginHorizontal(); - if (GUILayout.Button("选择补丁包1", GUILayout.MaxWidth(150))) - { - string resultPath = EditorUtility.OpenFilePanel("Find", "Assets/", "bytes"); - if (string.IsNullOrEmpty(resultPath)) - return; - _manifestPath1 = resultPath; - } - EditorGUILayout.LabelField(_manifestPath1); - EditorGUILayout.EndHorizontal(); - - GUILayout.Space(10); - EditorGUILayout.BeginHorizontal(); - if (GUILayout.Button("选择补丁包2", GUILayout.MaxWidth(150))) - { - string resultPath = EditorUtility.OpenFilePanel("Find", "Assets/", "bytes"); - if (string.IsNullOrEmpty(resultPath)) - return; - _manifestPath2 = resultPath; - } - EditorGUILayout.LabelField(_manifestPath2); - EditorGUILayout.EndHorizontal(); - - if (string.IsNullOrEmpty(_manifestPath1) == false && string.IsNullOrEmpty(_manifestPath2) == false) - { - if (GUILayout.Button("比对差异", GUILayout.MaxWidth(150))) - { - ComparePackage(_changeList, _newList); - } - } - - EditorGUILayout.Space(); - using (new EditorGUI.DisabledScope(false)) - { - int totalCount = _changeList.Count; - EditorGUILayout.Foldout(true, $"差异列表 ( {totalCount} )"); - - EditorGUI.indentLevel = 1; - _scrollPos1 = EditorGUILayout.BeginScrollView(_scrollPos1); - { - foreach (var bundle in _changeList) - { - EditorGUILayout.LabelField($"{bundle.BundleName} | {(bundle.FileSize / 1024)}K"); - } - } - EditorGUILayout.EndScrollView(); - EditorGUI.indentLevel = 0; - } - - EditorGUILayout.Space(); - using (new EditorGUI.DisabledScope(false)) - { - int totalCount = _newList.Count; - EditorGUILayout.Foldout(true, $"新增列表 ( {totalCount} )"); - - EditorGUI.indentLevel = 1; - _scrollPos2 = EditorGUILayout.BeginScrollView(_scrollPos2); - { - foreach (var bundle in _newList) - { - EditorGUILayout.LabelField($"{bundle.BundleName}"); - } - } - EditorGUILayout.EndScrollView(); - EditorGUI.indentLevel = 0; - } - } - - private void ComparePackage(List changeList, List newList) - { - changeList.Clear(); - newList.Clear(); - - // 加载补丁清单1 - byte[] bytesData1 = FileUtility.ReadAllBytes(_manifestPath1); - PackageManifest manifest1 = ManifestTools.DeserializeFromBinary(bytesData1); - - // 加载补丁清单1 - byte[] bytesData2 = FileUtility.ReadAllBytes(_manifestPath2); - PackageManifest manifest2 = ManifestTools.DeserializeFromBinary(bytesData2); - - // 拷贝文件列表 - foreach (var bundle2 in manifest2.BundleList) - { - if (manifest1.TryGetPackageBundleByBundleName(bundle2.BundleName, out PackageBundle bundle1)) - { - if (bundle2.FileHash != bundle1.FileHash) - { - changeList.Add(bundle2); - } - } - else - { - newList.Add(bundle2); - } - } - - // 按字母重新排序 - changeList.Sort((x, y) => string.Compare(x.BundleName, y.BundleName)); - newList.Sort((x, y) => string.Compare(x.BundleName, y.BundleName)); - - Debug.Log("资源包差异比对完成!"); - } - } -} diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageImporter/PackageImporterWindow.cs b/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageImporter/PackageImporterWindow.cs deleted file mode 100644 index 9f044d19..00000000 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/PackageImporter/PackageImporterWindow.cs +++ /dev/null @@ -1,91 +0,0 @@ -using System.IO; -using UnityEngine; -using UnityEditor; - -namespace YooAsset.Editor -{ - public class PackageImporterWindow : EditorWindow - { - static PackageImporterWindow _thisInstance; - - [MenuItem("YooAsset/Extension/补丁包导入工具", false, 101)] - static void ShowWindow() - { - if (_thisInstance == null) - { - _thisInstance = EditorWindow.GetWindow(typeof(PackageImporterWindow), false, "补丁包导入工具", true) as PackageImporterWindow; - _thisInstance.minSize = new Vector2(800, 600); - } - _thisInstance.Show(); - } - - private string _manifestPath = string.Empty; - private string _packageName = "DefaultPackage"; - - private void OnGUI() - { - GUILayout.Space(10); - EditorGUILayout.BeginHorizontal(); - if (GUILayout.Button("选择补丁包", GUILayout.MaxWidth(150))) - { - string resultPath = EditorUtility.OpenFilePanel("Find", "Assets/", "bytes"); - if (string.IsNullOrEmpty(resultPath)) - return; - _manifestPath = resultPath; - } - EditorGUILayout.LabelField(_manifestPath); - EditorGUILayout.EndHorizontal(); - - if (string.IsNullOrEmpty(_manifestPath) == false) - { - if (GUILayout.Button("导入补丁包(全部文件)", GUILayout.MaxWidth(150))) - { - string streamingAssetsRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); - EditorTools.ClearFolder(streamingAssetsRoot); - CopyPackageFiles(_manifestPath); - } - } - } - - private void CopyPackageFiles(string manifestFilePath) - { - string manifestFileName = Path.GetFileNameWithoutExtension(manifestFilePath); - string outputDirectory = Path.GetDirectoryName(manifestFilePath); - - // 加载补丁清单 - byte[] bytesData = FileUtility.ReadAllBytes(manifestFilePath); - PackageManifest manifest = ManifestTools.DeserializeFromBinary(bytesData); - - // 拷贝核心文件 - { - string sourcePath = $"{outputDirectory}/{manifestFileName}.bytes"; - string destPath = $"{AssetBundleBuilderHelper.GetStreamingAssetsRoot()}/{_packageName}/{manifestFileName}.bytes"; - EditorTools.CopyFile(sourcePath, destPath, true); - } - { - string sourcePath = $"{outputDirectory}/{manifestFileName}.hash"; - string destPath = $"{AssetBundleBuilderHelper.GetStreamingAssetsRoot()}/{_packageName}/{manifestFileName}.hash"; - EditorTools.CopyFile(sourcePath, destPath, true); - } - { - string fileName = YooAssetSettingsData.GetPackageVersionFileName(manifest.PackageName); - string sourcePath = $"{outputDirectory}/{fileName}"; - string destPath = $"{AssetBundleBuilderHelper.GetStreamingAssetsRoot()}/{_packageName}/{fileName}"; - EditorTools.CopyFile(sourcePath, destPath, true); - } - - // 拷贝文件列表 - int fileCount = 0; - foreach (var packageBundle in manifest.BundleList) - { - fileCount++; - string sourcePath = $"{outputDirectory}/{packageBundle.FileName}"; - string destPath = $"{AssetBundleBuilderHelper.GetStreamingAssetsRoot()}/{_packageName}/{packageBundle.FileName}"; - EditorTools.CopyFile(sourcePath, destPath, true); - } - - Debug.Log($"补丁包拷贝完成,一共拷贝了{fileCount}个资源文件"); - AssetDatabase.Refresh(); - } - } -} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector.meta b/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector.meta deleted file mode 100644 index aca7b747..00000000 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 93f24a30c5726804b989f2519943af15 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectionHelper.cs b/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectionHelper.cs deleted file mode 100644 index 7345fbf9..00000000 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectionHelper.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Diagnostics; -using UnityEngine; -using UnityEngine.Rendering; -using UnityEditor; -using YooAsset.Editor; - -public static class ShaderVariantCollectionHelper -{ - public static void ClearCurrentShaderVariantCollection() - { - EditorTools.InvokeNonPublicStaticMethod(typeof(ShaderUtil), "ClearCurrentShaderVariantCollection"); - } - public static void SaveCurrentShaderVariantCollection(string savePath) - { - EditorTools.InvokeNonPublicStaticMethod(typeof(ShaderUtil), "SaveCurrentShaderVariantCollection", savePath); - } - public static int GetCurrentShaderVariantCollectionShaderCount() - { - return (int)EditorTools.InvokeNonPublicStaticMethod(typeof(ShaderUtil), "GetCurrentShaderVariantCollectionShaderCount"); - } - public static int GetCurrentShaderVariantCollectionVariantCount() - { - return (int)EditorTools.InvokeNonPublicStaticMethod(typeof(ShaderUtil), "GetCurrentShaderVariantCollectionVariantCount"); - } - - /// - /// 获取着色器的变种总数量 - /// - public static string GetShaderVariantCount(string assetPath) - { - Shader shader = AssetDatabase.LoadAssetAtPath(assetPath); - var variantCount = EditorTools.InvokeNonPublicStaticMethod(typeof(ShaderUtil), "GetVariantCount", shader, true); - return variantCount.ToString(); - } -} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectionHelper.cs.meta b/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectionHelper.cs.meta deleted file mode 100644 index db426bdb..00000000 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectionHelper.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a6f458efe3baabc478ef3b050d5fa721 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectionManifest.cs b/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectionManifest.cs deleted file mode 100644 index 49414bfe..00000000 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectionManifest.cs +++ /dev/null @@ -1,155 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using UnityEngine; -using UnityEngine.Rendering; -using UnityEditor; - -[Serializable] -public class ShaderVariantCollectionManifest -{ - [Serializable] - public class ShaderVariantElement - { - /// - /// Pass type to use in this variant. - /// - public PassType PassType; - - /// - /// Array of shader keywords to use in this variant. - /// - public string[] Keywords; - } - - [Serializable] - public class ShaderVariantInfo : IComparable - { - /// - /// 着色器资源路径. - /// - public string AssetPath; - - /// - /// 着色器名称 - /// - public string ShaderName; - - /// - /// 着色器变种总数 - /// - public int ShaderVariantCount = 0; - - /// - /// 着色器变种列表 - /// - public List ShaderVariantElements = new List(1000); - - public int CompareTo(ShaderVariantInfo other) - { - string thisStr = AssetPath + "+" +ShaderName; - string otherStr = other.AssetPath + "+" + other.ShaderName; - return thisStr.CompareTo(otherStr); - } - } - - - /// - /// Number of shaders in this collection - /// - public int ShaderTotalCount; - - /// - /// Number of total varians in this collection - /// - public int VariantTotalCount; - - /// - /// Shader variants info list. - /// - public List ShaderVariantInfos = new List(1000); - - /// - /// 添加着色器变种信息 - /// - public void AddShaderVariant(string assetPath, string shaderName, PassType passType, string[] keywords) - { - var info = GetOrCreateShaderVariantInfo(assetPath, shaderName); - ShaderVariantElement element = new ShaderVariantElement(); - element.PassType = passType; - element.Keywords = keywords; - info.ShaderVariantElements.Add(element); - info.ShaderVariantCount++; - } - private ShaderVariantInfo GetOrCreateShaderVariantInfo(string assetPath, string shaderName) - { - var selectList = ShaderVariantInfos.Where(t => t.ShaderName == shaderName && t.AssetPath == assetPath).ToList(); - if (selectList.Count == 0) - { - ShaderVariantInfo newInfo = new ShaderVariantInfo(); - newInfo.AssetPath = assetPath; - newInfo.ShaderName = shaderName; - ShaderVariantInfos.Add(newInfo); - return newInfo; - } - - if (selectList.Count != 1) - throw new Exception("Should never get here !"); - - return selectList[0]; - } - - - /// - /// 解析SVC文件并将数据写入到清单 - /// - public static ShaderVariantCollectionManifest Extract(ShaderVariantCollection svc) - { - var manifest = new ShaderVariantCollectionManifest(); - manifest.ShaderTotalCount = ShaderVariantCollectionHelper.GetCurrentShaderVariantCollectionShaderCount(); - manifest.VariantTotalCount = ShaderVariantCollectionHelper.GetCurrentShaderVariantCollectionVariantCount(); - - using (var so = new SerializedObject(svc)) - { - var shaderArray = so.FindProperty("m_Shaders.Array"); - if (shaderArray != null && shaderArray.isArray) - { - for (int i = 0; i < shaderArray.arraySize; ++i) - { - var shaderRef = shaderArray.FindPropertyRelative($"data[{i}].first"); - var shaderVariantsArray = shaderArray.FindPropertyRelative($"data[{i}].second.variants"); - if (shaderRef != null && shaderRef.propertyType == SerializedPropertyType.ObjectReference && shaderVariantsArray != null && shaderVariantsArray.isArray) - { - var shader = shaderRef.objectReferenceValue as Shader; - if (shader == null) - { - throw new Exception("Invalid shader in ShaderVariantCollection file."); - } - - string shaderAssetPath = AssetDatabase.GetAssetPath(shader); - string shaderName = shader.name; - - // 添加变种信息 - for (int j = 0; j < shaderVariantsArray.arraySize; ++j) - { - var propKeywords = shaderVariantsArray.FindPropertyRelative($"Array.data[{j}].keywords"); - var propPassType = shaderVariantsArray.FindPropertyRelative($"Array.data[{j}].passType"); - if (propKeywords != null && propPassType != null && propKeywords.propertyType == SerializedPropertyType.String) - { - string[] keywords = propKeywords.stringValue.Split(' '); - PassType pathType = (PassType)propPassType.intValue; - manifest.AddShaderVariant(shaderAssetPath, shaderName, pathType, keywords); - } - } - } - } - } - } - - // 重新排序 - manifest.ShaderVariantInfos.Sort(); - return manifest; - } -} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectionManifest.cs.meta b/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectionManifest.cs.meta deleted file mode 100644 index 520d6f4d..00000000 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectionManifest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 53dee37cbabc2de478e46c9090c1f685 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollector.cs b/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollector.cs deleted file mode 100644 index 2eada214..00000000 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollector.cs +++ /dev/null @@ -1,256 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.IO; -using UnityEngine; -using UnityEditor; -using UnityEditor.SceneManagement; -using YooAsset.Editor; -using Debug = UnityEngine.Debug; - -public static class ShaderVariantCollector -{ - private enum ESteps - { - None, - Prepare, - CollectAllMaterial, - CollectVariants, - CollectSleeping, - WaitingDone, - } - - private const float WaitMilliseconds = 1000f; - private const float SleepMilliseconds = 2000f; - private static string _savePath; - private static string _packageName; - private static int _processMaxNum; - private static Action _completedCallback; - - private static ESteps _steps = ESteps.None; - private static Stopwatch _elapsedTime; - private static List _allMaterials; - private static List _allSpheres = new List(1000); - - - /// - /// 开始收集 - /// - public static void Run(string savePath, string packageName, int processMaxNum, Action completedCallback) - { - if (_steps != ESteps.None) - return; - - if (Path.HasExtension(savePath) == false) - savePath = $"{savePath}.shadervariants"; - if (Path.GetExtension(savePath) != ".shadervariants") - throw new System.Exception("Shader variant file extension is invalid."); - if (string.IsNullOrEmpty(packageName)) - throw new System.Exception("Package name is null or empty !"); - - // 注意:先删除再保存,否则ShaderVariantCollection内容将无法及时刷新 - AssetDatabase.DeleteAsset(savePath); - EditorTools.CreateFileDirectory(savePath); - _savePath = savePath; - _packageName = packageName; - _processMaxNum = processMaxNum; - _completedCallback = completedCallback; - - // 聚焦到游戏窗口 - EditorTools.FocusUnityGameWindow(); - - // 创建临时测试场景 - CreateTempScene(); - - _steps = ESteps.Prepare; - EditorApplication.update += EditorUpdate; - } - - private static void EditorUpdate() - { - if (_steps == ESteps.None) - return; - - if (_steps == ESteps.Prepare) - { - ShaderVariantCollectionHelper.ClearCurrentShaderVariantCollection(); - _steps = ESteps.CollectAllMaterial; - return; //等待一帧 - } - - if (_steps == ESteps.CollectAllMaterial) - { - _allMaterials = GetAllMaterials(); - _steps = ESteps.CollectVariants; - return; //等待一帧 - } - - if (_steps == ESteps.CollectVariants) - { - int count = Mathf.Min(_processMaxNum, _allMaterials.Count); - List range = _allMaterials.GetRange(0, count); - _allMaterials.RemoveRange(0, count); - CollectVariants(range); - - if (_allMaterials.Count > 0) - { - _elapsedTime = Stopwatch.StartNew(); - _steps = ESteps.CollectSleeping; - } - else - { - _elapsedTime = Stopwatch.StartNew(); - _steps = ESteps.WaitingDone; - } - } - - if (_steps == ESteps.CollectSleeping) - { - if (_elapsedTime.ElapsedMilliseconds > SleepMilliseconds) - { - DestroyAllSpheres(); - _elapsedTime.Stop(); - _steps = ESteps.CollectVariants; - } - } - - if (_steps == ESteps.WaitingDone) - { - // 注意:一定要延迟保存才会起效 - if (_elapsedTime.ElapsedMilliseconds > WaitMilliseconds) - { - _elapsedTime.Stop(); - _steps = ESteps.None; - - // 保存结果并创建清单 - ShaderVariantCollectionHelper.SaveCurrentShaderVariantCollection(_savePath); - CreateManifest(); - - Debug.Log($"搜集SVC完毕!"); - EditorApplication.update -= EditorUpdate; - _completedCallback?.Invoke(); - } - } - } - private static void CreateTempScene() - { - EditorSceneManager.NewScene(NewSceneSetup.DefaultGameObjects); - } - private static List GetAllMaterials() - { - int progressValue = 0; - List allAssets = new List(1000); - - // 获取所有打包的资源 - CollectResult collectResult = AssetBundleCollectorSettingData.Setting.GetPackageAssets(EBuildMode.DryRunBuild, _packageName); - foreach (var assetInfo in collectResult.CollectAssets) - { - string[] depends = AssetDatabase.GetDependencies(assetInfo.AssetInfo.AssetPath, true); - foreach (var dependAsset in depends) - { - if (allAssets.Contains(dependAsset) == false) - allAssets.Add(dependAsset); - } - EditorTools.DisplayProgressBar("获取所有打包资源", ++progressValue, collectResult.CollectAssets.Count); - } - EditorTools.ClearProgressBar(); - - // 搜集所有材质球 - progressValue = 0; - List allMaterial = new List(1000); - foreach (var assetPath in allAssets) - { - System.Type assetType = AssetDatabase.GetMainAssetTypeAtPath(assetPath); - if (assetType == typeof(UnityEngine.Material)) - { - allMaterial.Add(assetPath); - } - EditorTools.DisplayProgressBar("搜集所有材质球", ++progressValue, allAssets.Count); - } - EditorTools.ClearProgressBar(); - - // 返回结果 - return allMaterial; - } - private static void CollectVariants(List materials) - { - Camera camera = Camera.main; - if (camera == null) - throw new System.Exception("Not found main camera."); - - // 设置主相机 - float aspect = camera.aspect; - int totalMaterials = materials.Count; - float height = Mathf.Sqrt(totalMaterials / aspect) + 1; - float width = Mathf.Sqrt(totalMaterials / aspect) * aspect + 1; - float halfHeight = Mathf.CeilToInt(height / 2f); - float halfWidth = Mathf.CeilToInt(width / 2f); - camera.orthographic = true; - camera.orthographicSize = halfHeight; - camera.transform.position = new Vector3(0f, 0f, -10f); - - // 创建测试球体 - int xMax = (int)(width - 1); - int x = 0, y = 0; - int progressValue = 0; - for (int i = 0; i < materials.Count; i++) - { - var material = materials[i]; - var position = new Vector3(x - halfWidth + 1f, y - halfHeight + 1f, 0f); - var go = CreateSphere(material, position, i); - if (go != null) - _allSpheres.Add(go); - if (x == xMax) - { - x = 0; - y++; - } - else - { - x++; - } - EditorTools.DisplayProgressBar("照射所有材质球", ++progressValue, materials.Count); - } - EditorTools.ClearProgressBar(); - } - private static GameObject CreateSphere(string assetPath, Vector3 position, int index) - { - var material = AssetDatabase.LoadAssetAtPath(assetPath); - var shader = material.shader; - if (shader == null) - return null; - - var go = GameObject.CreatePrimitive(PrimitiveType.Sphere); - go.GetComponent().sharedMaterial = material; - go.transform.position = position; - go.name = $"Sphere_{index} | {material.name}"; - return go; - } - private static void DestroyAllSpheres() - { - foreach (var go in _allSpheres) - { - GameObject.DestroyImmediate(go); - } - _allSpheres.Clear(); - - // 尝试释放编辑器加载的资源 - EditorUtility.UnloadUnusedAssetsImmediate(true); - } - private static void CreateManifest() - { - AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); - - ShaderVariantCollection svc = AssetDatabase.LoadAssetAtPath(_savePath); - if (svc != null) - { - var wrapper = ShaderVariantCollectionManifest.Extract(svc); - string jsonData = JsonUtility.ToJson(wrapper, true); - string savePath = _savePath.Replace(".shadervariants", ".json"); - File.WriteAllText(savePath, jsonData); - } - - AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); - } -} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollector.cs.meta b/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollector.cs.meta deleted file mode 100644 index ab317994..00000000 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollector.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: dec5efa58db0c464b86179a0f02cb772 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectorSetting.cs b/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectorSetting.cs deleted file mode 100644 index 62fecc01..00000000 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectorSetting.cs +++ /dev/null @@ -1,29 +0,0 @@ -using UnityEngine; -using UnityEditor; - -public class ShaderVariantCollectorSetting : ScriptableObject -{ - private const string DefaultSavePath = "Assets/MyShaderVariants.shadervariants"; - - public static string GeFileSavePath(string packageName) - { - string key = $"{Application.productName}_{packageName}_GeFileSavePath"; - return EditorPrefs.GetString(key, DefaultSavePath); - } - public static void SetFileSavePath(string packageName, string savePath) - { - string key = $"{Application.productName}_{packageName}_GeFileSavePath"; - EditorPrefs.SetString(key, savePath); - } - - public static int GeProcessCapacity(string packageName) - { - string key = $"{Application.productName}_{packageName}_GeProcessCapacity"; - return EditorPrefs.GetInt(key, 1000); - } - public static void SetProcessCapacity(string packageName, int capacity) - { - string key = $"{Application.productName}_{packageName}_GeProcessCapacity"; - EditorPrefs.SetInt(key, capacity); - } -} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectorSetting.cs.meta b/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectorSetting.cs.meta deleted file mode 100644 index c69c2e85..00000000 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectorSetting.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ae6792b0c0b08b3439ab2a9f0362a978 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectorWindow.cs b/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectorWindow.cs deleted file mode 100644 index 2b6b7b39..00000000 --- a/UnityProject/Packages/YooAsset/Editor/Extension/YooAssetEditor/ShaderVariantCollector/ShaderVariantCollectorWindow.cs +++ /dev/null @@ -1,150 +0,0 @@ -#if UNITY_2019_4_OR_NEWER -using System; -using System.Linq; -using System.Collections.Generic; -using UnityEditor; -using UnityEngine; -using UnityEditor.UIElements; -using UnityEngine.UIElements; -using YooAsset.Editor; - -public class ShaderVariantCollectorWindow : EditorWindow -{ - [MenuItem("YooAsset/Extension/着色器变种收集器", false, 100)] - public static void OpenWindow() - { - ShaderVariantCollectorWindow window = GetWindow("着色器变种收集工具", true); - window.minSize = new Vector2(800, 600); - } - - private Button _collectButton; - private TextField _collectOutputField; - private Label _currentShaderCountField; - private Label _currentVariantCountField; - private SliderInt _processCapacitySlider; - private PopupField _packageField; - - private List _packageNames; - private string _currentPackageName; - - public void CreateGUI() - { - try - { - VisualElement root = this.rootVisualElement; - - // 加载布局文件 - var visualAsset = UxmlLoader.LoadWindowUXML(); - if (visualAsset == null) - return; - - visualAsset.CloneTree(root); - - // 包裹名称列表 - _packageNames = GetBuildPackageNames(); - _currentPackageName = _packageNames[0]; - - // 文件输出目录 - _collectOutputField = root.Q("CollectOutput"); - _collectOutputField.SetValueWithoutNotify(ShaderVariantCollectorSetting.GeFileSavePath(_currentPackageName)); - _collectOutputField.RegisterValueChangedCallback(evt => - { - ShaderVariantCollectorSetting.SetFileSavePath(_currentPackageName, _collectOutputField.value); - }); - - // 收集的包裹 - var packageContainer = root.Q("PackageContainer"); - if (_packageNames.Count > 0) - { - int defaultIndex = GetDefaultPackageIndex(_currentPackageName); - _packageField = new PopupField(_packageNames, defaultIndex); - _packageField.label = "Package"; - _packageField.style.width = 350; - _packageField.RegisterValueChangedCallback(evt => - { - _currentPackageName = _packageField.value; - }); - packageContainer.Add(_packageField); - } - else - { - _packageField = new PopupField(); - _packageField.label = "Package"; - _packageField.style.width = 350; - packageContainer.Add(_packageField); - } - - // 容器值 - _processCapacitySlider = root.Q("ProcessCapacity"); - _processCapacitySlider.SetValueWithoutNotify(ShaderVariantCollectorSetting.GeProcessCapacity(_currentPackageName)); -#if !UNITY_2020_3_OR_NEWER - _processCapacitySlider.label = $"Capacity ({_processCapacitySlider.value})"; - _processCapacitySlider.RegisterValueChangedCallback(evt => - { - ShaderVariantCollectorSetting.SetProcessCapacity(_currentPackageName, _processCapacitySlider.value); - _processCapacitySlider.label = $"Capacity ({_processCapacitySlider.value})"; - }); -#else - _processCapacitySlider.RegisterValueChangedCallback(evt => - { - ShaderVariantCollectorSetting.SetProcessCapacity(_currentPackageName, _processCapacitySlider.value); - }); -#endif - - _currentShaderCountField = root.Q