From 86b1ff5d7ba48a271a5c91516c980ded9e66f135 Mon Sep 17 00:00:00 2001 From: Alex-Rachel <574809918@qq.com> Date: Tue, 8 Jul 2025 23:02:24 +0800 Subject: [PATCH] Update YooAsset 2.3.8 -> 2.3.12 --- .../Editor/ReleaseTools/ReleaseTools.cs | 2 +- .../ResourceModule/ResourceModule.Services.cs | 16 + UnityProject/Packages/YooAsset/CHANGELOG.md | 135 +++++++ .../AssetArtReporterWindow.cs | 58 ++- .../Editor/AssetArtReporter/EHeaderType.cs | 5 + .../Editor/AssetArtReporter/ReportHeader.cs | 6 + .../AssetArtScanner/AssetArtScannerSetting.cs | 2 +- .../Editor/AssetArtScanner/ScannerResult.cs | 2 +- .../AssetBundleBuilderSetting.cs | 63 +-- .../AssetBundleBuilderWindow.cs | 58 +-- .../AssetBundleBuilder/BuildParameters.cs | 5 + .../BaseTasks/TaskCreateCatalog.cs | 3 +- .../BaseTasks/TaskCreateManifest.cs | 12 +- .../BaseTasks/TaskCreateReport.cs | 3 +- ...yption.cs => DefaultEncryptionServices.cs} | 0 ...meta => DefaultEncryptionServices.cs.meta} | 0 .../DefaultManifestServices.cs | 15 + .../DefaultManifestServices.cs.meta | 11 + .../AssetBundleBuilder/IBuildPipeline.cs | 7 +- .../VisualViewers/BuildPipelineAttribute.cs | 14 + .../BuildPipelineAttribute.cs.meta | 11 + .../VisualViewers/BuildPipelineViewerBase.cs | 371 +++++++++--------- .../VisualViewers/BuiltinBuildPipeline.meta | 8 + .../BuiltinBuildPipelineViewer.cs | 132 +++++++ .../BuiltinBuildPipelineViewer.cs.meta | 0 .../BuiltinBuildPipelineViewer.uxml} | 2 +- .../BuiltinBuildPipelineViewer.uxml.meta | 10 + .../BuiltinBuildPipelineViewer.cs | 57 --- .../EditorSimulateBuildpipeline.meta | 8 + .../EditorSimulateBuildPipelineViewer.cs | 85 ++++ ...EditorSimulateBuildPipelineViewer.cs.meta} | 0 .../EditorSimulateBuildPipelineViewer.uxml | 8 + ...ditorSimulateBuildPipelineViewer.uxml.meta | 10 + .../EditorSimulateBuildpipelineViewer.cs | 70 ---- .../VisualViewers/RawfileBuildpipeline.meta | 8 + .../RawfileBuildPipelineViewer.cs | 124 ++++++ .../RawfileBuildPipelineViewer.cs.meta} | 0 .../RawfileBuildPipelineViewer.uxml | 14 + .../RawfileBuildPipelineViewer.uxml.meta | 10 + .../RawfileBuildpipelineViewer.cs | 56 --- .../ScriptableBuildPipeline.meta | 8 + .../ScriptableBuildPipelineViewer.cs | 145 +++++++ .../ScriptableBuildPipelineViewer.cs.meta | 0 .../ScriptableBuildPipelineViewer.uxml | 15 + .../ScriptableBuildPipelineViewer.uxml.meta} | 0 .../ScriptableBuildPipelineViewer.cs | 70 ---- .../AssetBundleCollectorSettingData.cs | 2 +- .../AssetBundleCollectorWindow.cs | 5 +- .../AssetDependencyDatabase.cs | 39 +- .../DisplayNameAttribute.cs | 19 - .../AssetBundleReporter/ReportSummary.cs | 5 +- .../VisualViewers/ReporterSummaryViewer.cs | 3 +- .../Packages/YooAsset/Editor/EditorTools.cs | 17 + .../DefaultCells/AssetObjectCell.cs | 42 ++ .../DefaultCells/AssetObjectCell.cs.meta | 11 + .../DefaultTableData/DefaultTableData.cs | 9 +- .../Editor/UIElements/UIElementsTools.cs | 61 +++ .../EditorExtension/ClearBuildCache.meta | 8 + .../ClearBuildCache/ClearBuildCache.cs | 25 ++ .../ClearBuildCache/ClearBuildCache.cs.meta | 11 + .../PackageComparatorWindow.cs | 4 +- .../PackageImporter/PackageImporterWindow.cs | 2 +- UnityProject/Packages/YooAsset/Mini Game.meta | 8 + .../Packages/YooAsset/Mini Game/Runtime.meta | 8 + .../Runtime}/TiktokFileSystem.meta | 0 .../TiktokFileSystem/BundleResult.meta | 0 .../BundleResult/TTAssetBundleResult.cs | 0 .../BundleResult/TTAssetBundleResult.cs.meta | 0 .../Runtime}/TiktokFileSystem/Operation.meta | 0 .../Operation/TTFSDownloadFileOperation.cs | 0 .../TTFSDownloadFileOperation.cs.meta | 0 .../Operation/TTFSInitializeOperation.cs | 0 .../Operation/TTFSInitializeOperation.cs.meta | 0 .../Operation/TTFSLoadBundleOperation.cs | 0 .../Operation/TTFSLoadBundleOperation.cs.meta | 0 .../TTFSLoadPackageManifestOperation.cs | 0 .../TTFSLoadPackageManifestOperation.cs.meta | 0 .../TTFSRequestPackageVersionOperation.cs | 6 +- ...TTFSRequestPackageVersionOperation.cs.meta | 0 .../TiktokFileSystem/Operation/internal.meta | 0 .../DownloadTiktokAssetBundleOperation.cs | 0 ...DownloadTiktokAssetBundleOperation.cs.meta | 0 .../LoadTiktokPackageManifestOperation.cs | 2 +- ...LoadTiktokPackageManifestOperation.cs.meta | 0 .../RequestTiktokPackageHashOperation.cs | 0 .../RequestTiktokPackageHashOperation.cs.meta | 0 .../RequestTiktokPackageVersionOperation.cs | 18 +- ...questTiktokPackageVersionOperation.cs.meta | 0 .../TiktokFileSystem/TiktokFileSystem.cs | 15 +- .../TiktokFileSystem/TiktokFileSystem.cs.meta | 0 .../Runtime}/WechatFileSystem.meta | 0 .../WechatFileSystem/BundleResult.meta | 0 .../BundleResult/WXAssetBundleResult.cs | 0 .../BundleResult/WXAssetBundleResult.cs.meta | 0 .../Runtime}/WechatFileSystem/Operation.meta | 0 .../WXFSClearAllBundleFilesOperation.cs | 0 .../WXFSClearAllBundleFilesOperation.cs.meta | 0 .../WXFSClearUnusedBundleFilesAsync.cs | 0 .../WXFSClearUnusedBundleFilesAsync.cs.meta | 0 .../Operation/WXFSDownloadFileOperation.cs | 0 .../WXFSDownloadFileOperation.cs.meta | 0 .../Operation/WXFSInitializeOperation.cs | 0 .../Operation/WXFSInitializeOperation.cs.meta | 0 .../Operation/WXFSLoadBundleOperation.cs | 0 .../Operation/WXFSLoadBundleOperation.cs.meta | 0 .../WXFSLoadPackageManifestOperation.cs | 0 .../WXFSLoadPackageManifestOperation.cs.meta | 0 .../WXFSRequestPackageVersionOperation.cs | 0 ...WXFSRequestPackageVersionOperation.cs.meta | 0 .../WechatFileSystem/Operation/internal.meta | 0 .../DownloadWechatAssetBundleOperation.cs | 0 ...DownloadWechatAssetBundleOperation.cs.meta | 0 .../LoadWechatPackageManifestOperation.cs | 2 +- ...LoadWechatPackageManifestOperation.cs.meta | 0 .../RequestWechatPackageHashOperation.cs | 0 .../RequestWechatPackageHashOperation.cs.meta | 0 .../RequestWechatPackageVersionOperation.cs | 2 +- ...questWechatPackageVersionOperation.cs.meta | 0 .../WechatFileSystem/WechatFileSystem.cs | 22 +- .../WechatFileSystem/WechatFileSystem.cs.meta | 0 .../Runtime/YooAsset.MiniGame.asmdef | 18 + .../Runtime/YooAsset.MiniGame.asmdef.meta | 7 + .../YooAsset/Runtime/Assembly/AssemblyInfo.cs | 1 + .../DownloadSystem/DownloadSystemHelper.cs | 2 + .../AssetBundleLoadSceneOperation.cs | 2 +- .../VirtualBundleLoadSceneOperation.cs | 2 +- .../DefaultBuildinFileSystem.cs | 19 + .../DefaultBuildinFileSystemBuild.cs | 21 +- .../Operation/DBFSInitializeOperation.cs | 4 +- .../LoadBuildinPackageManifestOperation.cs | 2 +- .../DefaultCacheFileSystem.cs | 35 +- .../Operation/DCFSLoadBundleOperation.cs | 29 +- .../internal/DownloadCenterOperation.cs | 25 +- .../internal/DownloadLocalFileOperation.cs | 221 +++++++++++ .../DownloadLocalFileOperation.cs.meta | 11 + .../internal/DownloadNormalFileOperation.cs | 30 +- .../internal/DownloadResumeFileOperation.cs | 31 +- .../LoadCachePackageManifestOperation.cs | 2 +- .../internal/VerifyTempFileOperation.cs | 5 +- .../LoadEditorPackageManifestOperation.cs | 2 +- .../DefaultUnpackFileSystemDefine.cs | 5 - .../DefaultWebRemoteFileSystem.cs | 11 +- .../LoadWebRemotePackageManifestOperation.cs | 2 +- .../DefaultWebServerFileSystem.cs | 9 + .../Operation/DWSFSInitializeOperation.cs | 4 +- .../LoadWebServerPackageManifestOperation.cs | 2 +- .../FileSystem/FileSystemParametersDefine.cs | 2 + .../Operation/FSDownloadFileOperation.cs | 2 +- .../Internal/DefaultDownloadFileOperation.cs | 1 + .../YooAsset/Runtime/InitializeParameters.cs | 5 + .../OperationSystem/AsyncOperationBase.cs | 7 +- .../Internal/LoadBundleFileOperation.cs | 14 +- .../Provider/AllAssetsProvider.cs | 5 + .../ResourceManager/Provider/AssetProvider.cs | 5 + .../Provider/ProviderOperation.cs | 3 +- .../Provider/SubAssetsProvider.cs | 5 + .../ResourceManager/ResourceManager.cs | 55 +-- .../Runtime/ResourcePackage/ManifestTools.cs | 32 +- .../Internal/DeserializeManifestOperation.cs | 25 +- .../ResourcePackage/ResourcePackage.cs | 8 +- .../Services/ICopyLocalFileServices.cs | 30 ++ .../Services/ICopyLocalFileServices.cs.meta | 11 + .../Runtime/Services/IDecryptionServices.cs | 12 +- .../Runtime/Services/IEncryptionServices.cs | 25 +- .../Runtime/Services/IManifestServices.cs | 19 + .../Services/IManifestServices.cs.meta | 11 + .../YooAsset/Runtime/Utility/BufferWriter.cs | 10 + .../YooAsset/Runtime/Utility/YooUtility.cs | 14 + .../Packages/YooAsset/Runtime/YooAssets.cs | 28 +- .../YooAsset/Runtime/YooAssetsDriver.cs | 3 +- UnityProject/Packages/YooAsset/package.json | 7 +- UnityProject/Packages/packages-lock.json | 22 +- 172 files changed, 2124 insertions(+), 724 deletions(-) rename UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/{DefaultEncryption.cs => DefaultEncryptionServices.cs} (100%) rename UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/{DefaultEncryption.cs.meta => DefaultEncryptionServices.cs.meta} (100%) create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/DefaultManifestServices.cs create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/DefaultManifestServices.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineAttribute.cs create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineAttribute.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipeline.meta create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipeline/BuiltinBuildPipelineViewer.cs rename UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/{ => BuiltinBuildPipeline}/BuiltinBuildPipelineViewer.cs.meta (100%) rename UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/{BuildPipelineViewerBase.uxml => BuiltinBuildPipeline/BuiltinBuildPipelineViewer.uxml} (94%) create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipeline/BuiltinBuildPipelineViewer.uxml.meta delete mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipelineViewer.cs create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipeline.meta create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipeline/EditorSimulateBuildPipelineViewer.cs rename UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/{EditorSimulateBuildpipelineViewer.cs.meta => EditorSimulateBuildpipeline/EditorSimulateBuildPipelineViewer.cs.meta} (100%) create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipeline/EditorSimulateBuildPipelineViewer.uxml create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipeline/EditorSimulateBuildPipelineViewer.uxml.meta delete mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipeline.meta create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipeline/RawfileBuildPipelineViewer.cs rename UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/{RawfileBuildpipelineViewer.cs.meta => RawfileBuildpipeline/RawfileBuildPipelineViewer.cs.meta} (100%) create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipeline/RawfileBuildPipelineViewer.uxml create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipeline/RawfileBuildPipelineViewer.uxml.meta delete mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipelineViewer.cs create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipeline.meta create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipeline/ScriptableBuildPipelineViewer.cs rename UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/{ => ScriptableBuildPipeline}/ScriptableBuildPipelineViewer.cs.meta (100%) create mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipeline/ScriptableBuildPipelineViewer.uxml rename UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/{BuildPipelineViewerBase.uxml.meta => ScriptableBuildPipeline/ScriptableBuildPipelineViewer.uxml.meta} (100%) delete mode 100644 UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipelineViewer.cs create mode 100644 UnityProject/Packages/YooAsset/Editor/UIElements/TableViewer/DefaultCells/AssetObjectCell.cs create mode 100644 UnityProject/Packages/YooAsset/Editor/UIElements/TableViewer/DefaultCells/AssetObjectCell.cs.meta create mode 100644 UnityProject/Packages/YooAsset/EditorExtension/ClearBuildCache.meta create mode 100644 UnityProject/Packages/YooAsset/EditorExtension/ClearBuildCache/ClearBuildCache.cs create mode 100644 UnityProject/Packages/YooAsset/EditorExtension/ClearBuildCache/ClearBuildCache.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Mini Game.meta create mode 100644 UnityProject/Packages/YooAsset/Mini Game/Runtime.meta rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/BundleResult.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/BundleResult/TTAssetBundleResult.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/BundleResult/TTAssetBundleResult.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/TTFSDownloadFileOperation.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/TTFSDownloadFileOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/TTFSInitializeOperation.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/TTFSInitializeOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/TTFSLoadBundleOperation.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/TTFSLoadBundleOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/TTFSLoadPackageManifestOperation.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/TTFSLoadPackageManifestOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/TTFSRequestPackageVersionOperation.cs (90%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/TTFSRequestPackageVersionOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/internal.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/internal/DownloadTiktokAssetBundleOperation.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/internal/DownloadTiktokAssetBundleOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/internal/LoadTiktokPackageManifestOperation.cs (98%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/internal/LoadTiktokPackageManifestOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/internal/RequestTiktokPackageHashOperation.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/internal/RequestTiktokPackageHashOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/internal/RequestTiktokPackageVersionOperation.cs (85%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/Operation/internal/RequestTiktokPackageVersionOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/TiktokFileSystem.cs (95%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/TiktokFileSystem/TiktokFileSystem.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/BundleResult.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/BundleResult/WXAssetBundleResult.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/BundleResult/WXAssetBundleResult.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/WXFSClearAllBundleFilesOperation.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/WXFSClearAllBundleFilesOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/WXFSClearUnusedBundleFilesAsync.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/WXFSClearUnusedBundleFilesAsync.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/WXFSDownloadFileOperation.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/WXFSDownloadFileOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/WXFSInitializeOperation.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/WXFSInitializeOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/WXFSLoadBundleOperation.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/WXFSLoadBundleOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/WXFSLoadPackageManifestOperation.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/WXFSLoadPackageManifestOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/WXFSRequestPackageVersionOperation.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/WXFSRequestPackageVersionOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/internal.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/internal/DownloadWechatAssetBundleOperation.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/internal/DownloadWechatAssetBundleOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/internal/LoadWechatPackageManifestOperation.cs (98%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/internal/LoadWechatPackageManifestOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/internal/RequestWechatPackageHashOperation.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/internal/RequestWechatPackageHashOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/internal/RequestWechatPackageVersionOperation.cs (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/Operation/internal/RequestWechatPackageVersionOperation.cs.meta (100%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/WechatFileSystem.cs (91%) rename UnityProject/Packages/YooAsset/{RuntimeExtension/ExtensionFileSystem => Mini Game/Runtime}/WechatFileSystem/WechatFileSystem.cs.meta (100%) create mode 100644 UnityProject/Packages/YooAsset/Mini Game/Runtime/YooAsset.MiniGame.asmdef create mode 100644 UnityProject/Packages/YooAsset/Mini Game/Runtime/YooAsset.MiniGame.asmdef.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadLocalFileOperation.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/FileSystem/DefaultCacheFileSystem/Operation/internal/DownloadLocalFileOperation.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/Services/ICopyLocalFileServices.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/Services/ICopyLocalFileServices.cs.meta create mode 100644 UnityProject/Packages/YooAsset/Runtime/Services/IManifestServices.cs create mode 100644 UnityProject/Packages/YooAsset/Runtime/Services/IManifestServices.cs.meta diff --git a/UnityProject/Assets/TEngine/Editor/ReleaseTools/ReleaseTools.cs b/UnityProject/Assets/TEngine/Editor/ReleaseTools/ReleaseTools.cs index ca0c9a64..fa0979a9 100644 --- a/UnityProject/Assets/TEngine/Editor/ReleaseTools/ReleaseTools.cs +++ b/UnityProject/Assets/TEngine/Editor/ReleaseTools/ReleaseTools.cs @@ -253,7 +253,7 @@ namespace TEngine /// private static IEncryptionServices CreateEncryptionInstance(string packageName, EBuildPipeline buildPipeline) { - var encryptionClassName = AssetBundleBuilderSetting.GetPackageEncyptionClassName(packageName, buildPipeline); + var encryptionClassName = AssetBundleBuilderSetting.GetPackageEncyptionServicesClassName(packageName, buildPipeline.ToString()); var encryptionClassTypes = EditorTools.GetAssignableTypes(typeof(IEncryptionServices)); var classType = encryptionClassTypes.Find(x => x.FullName != null && x.FullName.Equals(encryptionClassName)); if (classType != null) diff --git a/UnityProject/Assets/TEngine/Runtime/Module/ResourceModule/ResourceModule.Services.cs b/UnityProject/Assets/TEngine/Runtime/Module/ResourceModule/ResourceModule.Services.cs index d2353799..252859df 100644 --- a/UnityProject/Assets/TEngine/Runtime/Module/ResourceModule/ResourceModule.Services.cs +++ b/UnityProject/Assets/TEngine/Runtime/Module/ResourceModule/ResourceModule.Services.cs @@ -86,6 +86,14 @@ namespace TEngine return decryptResult; } + /// + /// 后备方式获取解密的资源包对象 + /// + DecryptResult IDecryptionServices.LoadAssetBundleFallback(DecryptFileInfo fileInfo) + { + return new DecryptResult(); + } + /// /// 获取解密的字节数据 /// @@ -157,6 +165,14 @@ namespace TEngine AssetBundle.LoadFromFileAsync(fileInfo.FileLoadPath, 0, GetFileOffset()); return decryptResult; } + + /// + /// 后备方式获取解密的资源包对象 + /// + DecryptResult IDecryptionServices.LoadAssetBundleFallback(DecryptFileInfo fileInfo) + { + return new DecryptResult(); + } /// /// 获取解密的字节数据 diff --git a/UnityProject/Packages/YooAsset/CHANGELOG.md b/UnityProject/Packages/YooAsset/CHANGELOG.md index f788c6d1..4540ee18 100644 --- a/UnityProject/Packages/YooAsset/CHANGELOG.md +++ b/UnityProject/Packages/YooAsset/CHANGELOG.md @@ -2,6 +2,141 @@ All notable changes to this package will be documented in this file. +## [2.3.12] - 2025-07-01 + +### Improvements + +- 优化了同步接口导致的资源拷贝和资源验证性能开销高的现象。 +- 微信小游戏和抖音小游戏支持资源清单加密。 + +### Fixed + +- (#579) 修复了2.3.10版本资源包构建页面里CopyBuildinFileParam无法编辑问题。 +- (#572) 修复了资源收集页面指定收集的预制体名称变动的问题。 +- (#582) 修复了非递归收集依赖时,依赖列表中才包含主资源的问题。 + +### Added + +- 新增初始化参数:WebGLForceSyncLoadAsset + + ```csharp + public abstract class InitializeParameters + { + /// + /// WebGL平台强制同步加载资源对象 + /// Add commentMore actions + public bool WebGLForceSyncLoadAsset = false; + } + ``` + +- (#576) 新增了资源清单服务类:IManifestServices + + ```csharp + /// + /// 资源清单文件处理服务接口 + /// + public interface IManifestServices + { + /// + /// 处理资源清单(压缩和加密) + /// + byte[] ProcessManifest(byte[] fileData); + + /// + /// 还原资源清单(解压和解密) + /// + byte[] RestoreManifest(byte[] fileData); + } + ``` + +- (#585) 新增了本地文件拷贝服务类:ICopyLocalFileServices + + ```csharp + /// + /// 本地文件拷贝服务类 + /// + public interface ICopyLocalFileServices + { + void CopyFile(LocalFileInfo sourceFileInfo, string destFilePath); + } + ``` + +## [2.3.10] - 2025-06-17 + +### Improvements + +- 小游戏扩展库已经独立,可以单独导入到项目工程。 +- 编辑器里的TableView视图新增了AssetObjectCell类。 +- (#552) 微信小游戏文件系统类,增加了URL合法性的初始化检测机制。 +- (#566) 重构了资源构建页面,方便扩展自定义界面。 +- (#573) 完善了AssetDependencyDB的输出日志,可以正确输出丢失的引用资产信息。 + +### Fixed + +- 修复太空战机DEMO在退出运行模式时的报错。 +- (#551) 修复了Unity2019, Unity2020的代码兼容性报错。 +- (#569) 修复了TVOS平台的兼容问题。 +- (#564) 修复了TiktokFileSystem文件系统里appendTimeTicks无效的问题。 + +### Added + +- (#562) 新增了解密方法。 + + ```csharp + public interface IDecryptionServices + { + /// + /// 后备方式获取解密的资源包对象 + /// 注意:当正常解密方法失败后,会触发后备加载! + /// 说明:建议通过LoadFromMemory()方法加载资源对象作为保底机制。 + /// issues : https://github.com/tuyoogame/YooAsset/issues/562 + /// + DecryptResult LoadAssetBundleFallback(DecryptFileInfo fileInfo); + } + ``` + + + +## [2.3.9] - 2025-05-13 + +### Improvements + +- 增加了YOO_ASSET_EXPERIMENT宏,用于控制实验性代码的开关。 +- 构建管线目前会输出构建日志到输出目录下,方便查看引擎在构建时主动清空的控制台日志。 +- 优化了收集器tag传染扩散逻辑,避免Group里配置了Tag导致的无意义的警告信息。 +- 扩展工程内PanelMonitor代码默认关闭状态。 + +### Fixed + +- (#528) 修复了AssetDependencyDatabase在查询引擎资源对象是否存在的时效问题。 + +### Added + +- (#542) 新增了资源管理系统销毁方法。 + + 该方法会销毁所有的资源包裹和异步操作任务,以及卸载所有AssetBundle对象! + + ```csharp + public class YooAssets + { + /// + /// 销毁资源系统 + /// + public static void Destroy(); + } + ``` + +- 新增了SBP构建管线的构建参数 + + ```csharp + /// + /// 从AssetBundle文件头里剥离Unity版本信息 + /// + public bool StripUnityVersion = false; + ``` + +- 新增了构建错误码:BuiltinShadersBundleNameIsNull + ## [2.3.8] - 2025-04-17 ### Improvements diff --git a/UnityProject/Packages/YooAsset/Editor/AssetArtReporter/AssetArtReporterWindow.cs b/UnityProject/Packages/YooAsset/Editor/AssetArtReporter/AssetArtReporterWindow.cs index e246c7ca..610fd4e9 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetArtReporter/AssetArtReporterWindow.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetArtReporter/AssetArtReporterWindow.cs @@ -196,6 +196,32 @@ namespace YooAsset.Editor } } + /// + /// 导入单个报告对象 + /// + public void ImportSingleReprotFile(ScanReport report) + { + _reportCombiner = new ScanReportCombiner(); + + try + { + _reportCombiner.Combine(report); + + // 刷新页面 + RefreshToolbar(); + FillTableView(); + RebuildView(); + } + catch (System.Exception e) + { + _reportCombiner = null; + _titleLabel.text = "导入报告失败!"; + _descLabel.text = e.Message; + UnityEngine.Debug.LogError(e.StackTrace); + } + } + + private void ImportSingleBtn_clicked() { string selectFilePath = EditorUtility.OpenFilePanel("导入报告", _lastestOpenFolder, "json"); @@ -446,15 +472,31 @@ namespace YooAsset.Editor var column = new TableColumn(header.HeaderTitle, header.HeaderTitle, columnStyle); column.MakeCell = () => { - var label = new Label(); - label.style.marginLeft = 3f; - label.style.unityTextAlign = TextAnchor.MiddleLeft; - return label; + if (header.HeaderType == EHeaderType.AssetObject) + { + var objectFiled = new ObjectField(); + return objectFiled; + } + else + { + var label = new Label(); + label.style.marginLeft = 3f; + label.style.unityTextAlign = TextAnchor.MiddleLeft; + return label; + } }; column.BindCell = (VisualElement element, ITableData data, ITableCell cell) => { - var infoLabel = element as Label; - infoLabel.text = (string)cell.GetDisplayObject(); + if (header.HeaderType == EHeaderType.AssetObject) + { + var objectFiled = element as ObjectField; + objectFiled.value = (UnityEngine.Object)cell.GetDisplayObject(); + } + else + { + var infoLabel = element as Label; + infoLabel.text = (string)cell.GetDisplayObject(); + } }; _elementTableView.AddColumn(column); } @@ -480,6 +522,10 @@ namespace YooAsset.Editor { tableData.AddAssetPathCell(scanInfo.HeaderTitle, scanInfo.ScanInfo); } + else if (header.HeaderType == EHeaderType.AssetObject) + { + tableData.AddAssetObjectCell(scanInfo.HeaderTitle, scanInfo.ScanInfo); + } else if (header.HeaderType == EHeaderType.StringValue) { tableData.AddStringValueCell(scanInfo.HeaderTitle, scanInfo.ScanInfo); diff --git a/UnityProject/Packages/YooAsset/Editor/AssetArtReporter/EHeaderType.cs b/UnityProject/Packages/YooAsset/Editor/AssetArtReporter/EHeaderType.cs index 3e3ee17f..009c7189 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetArtReporter/EHeaderType.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetArtReporter/EHeaderType.cs @@ -8,6 +8,11 @@ namespace YooAsset.Editor /// AssetPath, + /// + /// 资源对象 + /// + AssetObject, + /// /// 字符串 /// diff --git a/UnityProject/Packages/YooAsset/Editor/AssetArtReporter/ReportHeader.cs b/UnityProject/Packages/YooAsset/Editor/AssetArtReporter/ReportHeader.cs index ca194dde..2109e101 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetArtReporter/ReportHeader.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetArtReporter/ReportHeader.cs @@ -126,6 +126,12 @@ namespace YooAsset.Editor if (string.IsNullOrEmpty(guid)) throw new Exception($"{HeaderTitle} value is invalid asset path : {value}"); } + else if (HeaderType == EHeaderType.AssetObject) + { + string guid = AssetDatabase.AssetPathToGUID(value); + if (string.IsNullOrEmpty(guid)) + throw new Exception($"{HeaderTitle} value is invalid asset object : {value}"); + } else if (HeaderType == EHeaderType.DoubleValue) { if (double.TryParse(value, out double doubleValue) == false) diff --git a/UnityProject/Packages/YooAsset/Editor/AssetArtScanner/AssetArtScannerSetting.cs b/UnityProject/Packages/YooAsset/Editor/AssetArtScanner/AssetArtScannerSetting.cs index f82c10ef..dd54aa6c 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetArtScanner/AssetArtScannerSetting.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetArtScanner/AssetArtScannerSetting.cs @@ -46,7 +46,7 @@ namespace YooAsset.Editor } catch (Exception e) { - return new ScannerResult(e.Message); + return new ScannerResult(e.StackTrace); } } diff --git a/UnityProject/Packages/YooAsset/Editor/AssetArtScanner/ScannerResult.cs b/UnityProject/Packages/YooAsset/Editor/AssetArtScanner/ScannerResult.cs index 0e4a9c34..94b71fd4 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetArtScanner/ScannerResult.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetArtScanner/ScannerResult.cs @@ -52,7 +52,7 @@ namespace YooAsset.Editor if (Succeed) { var reproterWindow = AssetArtReporterWindow.OpenWindow(); - reproterWindow.ImportSingleReprotFile(ReprotFilePath); + reproterWindow.ImportSingleReprotFile(Report); } } } diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderSetting.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderSetting.cs index 48fb8f04..4f1948b1 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderSetting.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderSetting.cs @@ -6,97 +6,110 @@ namespace YooAsset.Editor { public static class AssetBundleBuilderSetting { - // EBuildPipeline - public static EBuildPipeline GetPackageBuildPipeline(string packageName) + // BuildPipelineName + public static string GetPackageBuildPipeline(string packageName) { - string key = $"{Application.productName}_{packageName}_{nameof(EBuildPipeline)}"; - return (EBuildPipeline)EditorPrefs.GetInt(key, (int)EBuildPipeline.BuiltinBuildPipeline); + string key = $"{Application.productName}_{packageName}_BuildPipelineName"; + string defaultValue = EBuildPipeline.ScriptableBuildPipeline.ToString(); + return EditorPrefs.GetString(key, defaultValue); } - public static void SetPackageBuildPipeline(string packageName, EBuildPipeline buildPipeline) + public static void SetPackageBuildPipeline(string packageName, string buildPipeline) { - string key = $"{Application.productName}_{packageName}_{nameof(EBuildPipeline)}"; - EditorPrefs.SetInt(key, (int)buildPipeline); + string key = $"{Application.productName}_{packageName}_BuildPipelineName"; + EditorPrefs.SetString(key, buildPipeline); } // ECompressOption - public static ECompressOption GetPackageCompressOption(string packageName, EBuildPipeline buildPipeline) + public static ECompressOption GetPackageCompressOption(string packageName, string buildPipeline) { string key = $"{Application.productName}_{packageName}_{buildPipeline}_{nameof(ECompressOption)}"; return (ECompressOption)EditorPrefs.GetInt(key, (int)ECompressOption.LZ4); } - public static void SetPackageCompressOption(string packageName, EBuildPipeline buildPipeline, ECompressOption compressOption) + public static void SetPackageCompressOption(string packageName, string buildPipeline, ECompressOption compressOption) { string key = $"{Application.productName}_{packageName}_{buildPipeline}_{nameof(ECompressOption)}"; EditorPrefs.SetInt(key, (int)compressOption); } // EFileNameStyle - public static EFileNameStyle GetPackageFileNameStyle(string packageName, EBuildPipeline buildPipeline) + public static EFileNameStyle GetPackageFileNameStyle(string packageName, string buildPipeline) { string key = $"{Application.productName}_{packageName}_{buildPipeline}_{nameof(EFileNameStyle)}"; return (EFileNameStyle)EditorPrefs.GetInt(key, (int)EFileNameStyle.HashName); } - public static void SetPackageFileNameStyle(string packageName, EBuildPipeline buildPipeline, EFileNameStyle fileNameStyle) + public static void SetPackageFileNameStyle(string packageName, string buildPipeline, EFileNameStyle fileNameStyle) { string key = $"{Application.productName}_{packageName}_{buildPipeline}_{nameof(EFileNameStyle)}"; EditorPrefs.SetInt(key, (int)fileNameStyle); } // EBuildinFileCopyOption - public static EBuildinFileCopyOption GetPackageBuildinFileCopyOption(string packageName, EBuildPipeline buildPipeline) + public static EBuildinFileCopyOption GetPackageBuildinFileCopyOption(string packageName, string buildPipeline) { string key = $"{Application.productName}_{packageName}_{buildPipeline}_{nameof(EBuildinFileCopyOption)}"; return (EBuildinFileCopyOption)EditorPrefs.GetInt(key, (int)EBuildinFileCopyOption.None); } - public static void SetPackageBuildinFileCopyOption(string packageName, EBuildPipeline buildPipeline, EBuildinFileCopyOption buildinFileCopyOption) + public static void SetPackageBuildinFileCopyOption(string packageName, string buildPipeline, EBuildinFileCopyOption buildinFileCopyOption) { string key = $"{Application.productName}_{packageName}_{buildPipeline}_{nameof(EBuildinFileCopyOption)}"; EditorPrefs.SetInt(key, (int)buildinFileCopyOption); } // BuildFileCopyParams - public static string GetPackageBuildinFileCopyParams(string packageName, EBuildPipeline buildPipeline) + public static string GetPackageBuildinFileCopyParams(string packageName, string buildPipeline) { string key = $"{Application.productName}_{packageName}_{buildPipeline}_BuildFileCopyParams"; return EditorPrefs.GetString(key, string.Empty); } - public static void SetPackageBuildinFileCopyParams(string packageName, EBuildPipeline buildPipeline, string buildinFileCopyParams) + public static void SetPackageBuildinFileCopyParams(string packageName, string buildPipeline, string buildinFileCopyParams) { string key = $"{Application.productName}_{packageName}_{buildPipeline}_BuildFileCopyParams"; EditorPrefs.SetString(key, buildinFileCopyParams); } - // EncyptionClassName - public static string GetPackageEncyptionClassName(string packageName, EBuildPipeline buildPipeline) + // EncyptionServicesClassName + public static string GetPackageEncyptionServicesClassName(string packageName, string buildPipeline) { - string key = $"{Application.productName}_{packageName}_{buildPipeline}_EncyptionClassName"; - return EditorPrefs.GetString(key, string.Empty); + string key = $"{Application.productName}_{packageName}_{buildPipeline}_EncyptionServicesClassName"; + return EditorPrefs.GetString(key, $"{typeof(EncryptionNone).FullName}"); } - public static void SetPackageEncyptionClassName(string packageName, EBuildPipeline buildPipeline, string encyptionClassName) + public static void SetPackageEncyptionServicesClassName(string packageName, string buildPipeline, string encyptionClassName) { - string key = $"{Application.productName}_{packageName}_{buildPipeline}_EncyptionClassName"; + string key = $"{Application.productName}_{packageName}_{buildPipeline}_EncyptionServicesClassName"; + EditorPrefs.SetString(key, encyptionClassName); + } + + // ManifestServicesClassName + public static string GetPackageManifestServicesClassName(string packageName, string buildPipeline) + { + string key = $"{Application.productName}_{packageName}_{buildPipeline}_ManifestServicesClassName"; + return EditorPrefs.GetString(key, $"{typeof(ManifestNone).FullName}"); + } + public static void SetPackageManifestServicesClassName(string packageName, string buildPipeline, string encyptionClassName) + { + string key = $"{Application.productName}_{packageName}_{buildPipeline}_ManifestServicesClassName"; EditorPrefs.SetString(key, encyptionClassName); } // ClearBuildCache - public static bool GetPackageClearBuildCache(string packageName, EBuildPipeline buildPipeline) + public static bool GetPackageClearBuildCache(string packageName, string buildPipeline) { string key = $"{Application.productName}_{packageName}_{buildPipeline}_ClearBuildCache"; return EditorPrefs.GetInt(key, 0) > 0; } - public static void SetPackageClearBuildCache(string packageName, EBuildPipeline buildPipeline, bool clearBuildCache) + public static void SetPackageClearBuildCache(string packageName, string 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) + public static bool GetPackageUseAssetDependencyDB(string packageName, string buildPipeline) { string key = $"{Application.productName}_{packageName}_{buildPipeline}_UseAssetDependencyDB"; return EditorPrefs.GetInt(key, 0) > 0; } - public static void SetPackageUseAssetDependencyDB(string packageName, EBuildPipeline buildPipeline, bool useAssetDependencyDB) + public static void SetPackageUseAssetDependencyDB(string packageName, string buildPipeline, bool useAssetDependencyDB) { string key = $"{Application.productName}_{packageName}_{buildPipeline}_UseAssetDependencyDB"; EditorPrefs.SetInt(key, useAssetDependencyDB ? 1 : 0); diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs index c97246c5..04cf64be 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs @@ -19,7 +19,9 @@ namespace YooAsset.Editor } private string _buildPackage; - private EBuildPipeline _buildPipeline; + private string _buildPipeline; + + private Dictionary _viewClassDic = new Dictionary(10); private Toolbar _toolbar; private ToolbarMenu _packageMenu; @@ -69,11 +71,23 @@ 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); _toolbar.Add(_pipelineMenu); + + var viewerClassTypes = EditorTools.GetAssignableTypes(typeof(BuildPipelineViewerBase)); + foreach (var classType in viewerClassTypes) + { + var buildPipelineAttribute = EditorTools.GetAttribute(classType); + string pipelineName = buildPipelineAttribute.PipelineName; + if (_viewClassDic.ContainsKey(pipelineName)) + { + Debug.LogWarning($"The pipeline has already exist : {pipelineName}"); + } + else + { + _viewClassDic.Add(pipelineName, classType); + _pipelineMenu.menu.AppendAction(pipelineName, PipelineMenuAction, PipelineMenuFun); + } + } } RefreshBuildPipelineView(); @@ -91,28 +105,18 @@ namespace YooAsset.Editor _buildPipeline = AssetBundleBuilderSetting.GetPackageBuildPipeline(_buildPackage); _packageMenu.text = _buildPackage; - _pipelineMenu.text = _buildPipeline.ToString(); + _pipelineMenu.text = _buildPipeline; - var buildTarget = EditorUserBuildSettings.activeBuildTarget; - if (_buildPipeline == EBuildPipeline.EditorSimulateBuildPipeline) + if (_viewClassDic.TryGetValue(_buildPipeline, out Type value)) { - var viewer = new EditorSimulateBuildPipelineViewer(_buildPackage, buildTarget, _container); - } - else if (_buildPipeline == EBuildPipeline.BuiltinBuildPipeline) - { - var viewer = new BuiltinBuildPipelineViewer(_buildPackage, buildTarget, _container); - } - else if (_buildPipeline == EBuildPipeline.ScriptableBuildPipeline) - { - var viewer = new ScriptableBuildPipelineViewer(_buildPackage, buildTarget, _container); - } - else if (_buildPipeline == EBuildPipeline.RawFileBuildPipeline) - { - var viewer = new RawfileBuildpipelineViewer(_buildPackage, buildTarget, _container); + var buildTarget = EditorUserBuildSettings.activeBuildTarget; + var viewer = Activator.CreateInstance(value) as BuildPipelineViewerBase; + viewer.InitView(_buildPackage, _buildPipeline, buildTarget); + viewer.CreateView(_container); } else { - throw new System.NotImplementedException(_buildPipeline.ToString()); + Debug.LogError($"Not found build pipeline : {_buildPipeline}"); } } private List GetBuildPackageNames() @@ -145,18 +149,16 @@ namespace YooAsset.Editor private void PipelineMenuAction(DropdownMenuAction action) { - var pipelineType = (EBuildPipeline)action.userData; - if (_buildPipeline != pipelineType) + if (_buildPipeline != action.name) { - _buildPipeline = pipelineType; - AssetBundleBuilderSetting.SetPackageBuildPipeline(_buildPackage, pipelineType); + _buildPipeline = action.name; + AssetBundleBuilderSetting.SetPackageBuildPipeline(_buildPackage, _buildPipeline); RefreshBuildPipelineView(); } } private DropdownMenuAction.Status PipelineMenuFun(DropdownMenuAction action) { - var pipelineType = (EBuildPipeline)action.userData; - if (_buildPipeline == pipelineType) + if (_buildPipeline == action.name) return DropdownMenuAction.Status.Checked; else return DropdownMenuAction.Status.Normal; diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs index e701dabe..58938c4f 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs @@ -98,6 +98,11 @@ namespace YooAsset.Editor /// public IEncryptionServices EncryptionServices; + /// + /// 资源清单服务类 + /// + public IManifestServices ManifestServices; + private string _pipelineOutputDirectory = string.Empty; private string _packageOutputDirectory = string.Empty; diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateCatalog.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateCatalog.cs index 67dabdde..03b8af32 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateCatalog.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateCatalog.cs @@ -14,7 +14,8 @@ namespace YooAsset.Editor { string buildinRootDirectory = buildParametersContext.GetBuildinRootDirectory(); string buildPackageName = buildParametersContext.Parameters.PackageName; - DefaultBuildinFileSystemBuild.CreateBuildinCatalogFile(buildPackageName, buildinRootDirectory); + var manifestServices = buildParametersContext.Parameters.ManifestServices; + DefaultBuildinFileSystemBuild.CreateBuildinCatalogFile(manifestServices, buildPackageName, buildinRootDirectory); // 刷新目录 AssetDatabase.Refresh(); diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs index a23dd021..5d5c6e62 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs @@ -58,7 +58,7 @@ namespace YooAsset.Editor if (processBundleDepends) ProcessBuiltinBundleDependency(context, manifest); - // 创建补丁清单文本文件 + // 创建资源清单文本文件 { string fileName = YooAssetSettingsData.GetManifestJsonFileName(buildParameters.PackageName, buildParameters.PackageVersion); string filePath = $"{packageOutputDirectory}/{fileName}"; @@ -66,18 +66,18 @@ namespace YooAsset.Editor BuildLogger.Log($"Create package manifest file: {filePath}"); } - // 创建补丁清单二进制文件 + // 创建资源清单二进制文件 string packageHash; string packagePath; { string fileName = YooAssetSettingsData.GetManifestBinaryFileName(buildParameters.PackageName, buildParameters.PackageVersion); packagePath = $"{packageOutputDirectory}/{fileName}"; - ManifestTools.SerializeToBinary(packagePath, manifest); + ManifestTools.SerializeToBinary(packagePath, manifest, buildParameters.ManifestServices); packageHash = HashUtility.FileCRC32(packagePath); BuildLogger.Log($"Create package manifest file: {packagePath}"); } - // 创建补丁清单哈希文件 + // 创建资源清单哈希文件 { string fileName = YooAssetSettingsData.GetPackageHashFileName(buildParameters.PackageName, buildParameters.PackageVersion); string filePath = $"{packageOutputDirectory}/{fileName}"; @@ -85,7 +85,7 @@ namespace YooAsset.Editor BuildLogger.Log($"Create package manifest hash file: {filePath}"); } - // 创建补丁清单版本文件 + // 创建资源清单版本文件 { string fileName = YooAssetSettingsData.GetPackageVersionFileName(buildParameters.PackageName); string filePath = $"{packageOutputDirectory}/{fileName}"; @@ -97,7 +97,7 @@ namespace YooAsset.Editor { ManifestContext manifestContext = new ManifestContext(); byte[] bytesData = FileUtility.ReadAllBytes(packagePath); - manifestContext.Manifest = ManifestTools.DeserializeFromBinary(bytesData); + manifestContext.Manifest = ManifestTools.DeserializeFromBinary(bytesData, buildParameters.ManifestServices); context.SetContextObject(manifestContext); } } diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateReport.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateReport.cs index 3a358bf5..79bf4f5d 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateReport.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateReport.cs @@ -43,7 +43,8 @@ namespace YooAsset.Editor buildReport.Summary.EnableSharePackRule = buildParameters.EnableSharePackRule; buildReport.Summary.SingleReferencedPackAlone = buildParameters.SingleReferencedPackAlone; buildReport.Summary.FileNameStyle = buildParameters.FileNameStyle; - buildReport.Summary.EncryptionClassName = buildParameters.EncryptionServices == null ? "null" : buildParameters.EncryptionServices.GetType().FullName; + buildReport.Summary.EncryptionServicesClassName = buildParameters.EncryptionServices == null ? "null" : buildParameters.EncryptionServices.GetType().FullName; + buildReport.Summary.ManifestServicesClassName = buildParameters.ManifestServices == null ? "null" : buildParameters.ManifestServices.GetType().FullName; if (buildParameters is BuiltinBuildParameters) { var builtinBuildParameters = buildParameters as BuiltinBuildParameters; diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/DefaultEncryption.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/DefaultEncryptionServices.cs similarity index 100% rename from UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/DefaultEncryption.cs rename to UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/DefaultEncryptionServices.cs diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/DefaultEncryption.cs.meta b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/DefaultEncryptionServices.cs.meta similarity index 100% rename from UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/DefaultEncryption.cs.meta rename to UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/DefaultEncryptionServices.cs.meta diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/DefaultManifestServices.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/DefaultManifestServices.cs new file mode 100644 index 00000000..62ebc1ea --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/DefaultManifestServices.cs @@ -0,0 +1,15 @@ + +namespace YooAsset.Editor +{ + public class ManifestNone : IManifestServices + { + public byte[] ProcessManifest(byte[] fileData) + { + return fileData; + } + public byte[] RestoreManifest(byte[] fileData) + { + return fileData; + } + } +} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/DefaultManifestServices.cs.meta b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/DefaultManifestServices.cs.meta new file mode 100644 index 00000000..73371bc0 --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/DefaultManifestServices.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 446513b0ea9f5d445ade0cfb09c5073b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/IBuildPipeline.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/IBuildPipeline.cs index 97b7f11e..5c82546f 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/IBuildPipeline.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/IBuildPipeline.cs @@ -1,8 +1,13 @@ - +using UnityEditor; +using UnityEngine; + namespace YooAsset.Editor { public interface IBuildPipeline { + /// + /// 运行构建任务 + /// BuildResult Run(BuildParameters buildParameters, bool enableLog); } } \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineAttribute.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineAttribute.cs new file mode 100644 index 00000000..24316977 --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineAttribute.cs @@ -0,0 +1,14 @@ +using System; + +namespace YooAsset.Editor +{ + public class BuildPipelineAttribute : Attribute + { + public string PipelineName; + + public BuildPipelineAttribute(string name) + { + this.PipelineName = name; + } + } +} \ No newline at end of file diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineAttribute.cs.meta b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineAttribute.cs.meta new file mode 100644 index 00000000..4f4c6ae2 --- /dev/null +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 90d865a5cede7ae43a5fdabdc20af0fd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs index a25205d6..dce8b86b 100644 --- a/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs +++ b/UnityProject/Packages/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs @@ -12,211 +12,224 @@ namespace YooAsset.Editor { internal abstract class BuildPipelineViewerBase { - private const int StyleWidth = 400; - private const int LabelMinWidth = 180; + protected const int StyleWidth = 400; + protected const int LabelMinWidth = 190; - protected readonly string PackageName; - protected readonly BuildTarget BuildTarget; - protected readonly EBuildPipeline BuildPipeline; - protected TemplateContainer Root; + protected string PackageName { private set; get; } + protected string PipelineName { private set; get; } + protected BuildTarget BuildTarget { private set; get; } - private TextField _buildOutputField; - private TextField _buildVersionField; - private PopupField _buildModeField; - private PopupField _encryptionField; - private EnumField _compressionField; - 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) + /// + /// 初始化视图 + /// + public void InitView(string packageName, string pipelineName, BuildTarget buildTarget) { PackageName = packageName; + PipelineName = pipelineName; BuildTarget = buildTarget; - BuildPipeline = buildPipeline; - - CreateView(parent); - RefreshView(); - } - private void CreateView(VisualElement parent) - { - // 加载布局文件 - var visualAsset = UxmlLoader.LoadWindowUXML(); - if (visualAsset == null) - return; - - Root = visualAsset.CloneTree(); - Root.style.flexGrow = 1f; - parent.Add(Root); - - // 输出目录 - string defaultOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); - _buildOutputField = Root.Q("BuildOutput"); - _buildOutputField.SetValueWithoutNotify(defaultOutputRoot); - _buildOutputField.SetEnabled(false); - - // 构建版本 - _buildVersionField = Root.Q("BuildVersion"); - _buildVersionField.style.width = StyleWidth; - _buildVersionField.SetValueWithoutNotify(GetDefaultPackageVersion()); - - // 加密方法 - { - var encryptionContainer = Root.Q("EncryptionContainer"); - var encryptionClassTypes = EditorTools.GetAssignableTypes(typeof(IEncryptionServices)); - if (encryptionClassTypes.Count > 0) - { - var encyptionClassName = AssetBundleBuilderSetting.GetPackageEncyptionClassName(PackageName, BuildPipeline); - int defaultIndex = encryptionClassTypes.FindIndex(x => x.FullName.Equals(encyptionClassName)); - if (defaultIndex < 0) - defaultIndex = 0; - _encryptionField = new PopupField(encryptionClassTypes, defaultIndex); - _encryptionField.label = "Encryption"; - _encryptionField.style.width = StyleWidth; - _encryptionField.RegisterValueChangedCallback(evt => - { - AssetBundleBuilderSetting.SetPackageEncyptionClassName(PackageName, BuildPipeline, _encryptionField.value.FullName); - }); - encryptionContainer.Add(_encryptionField); - } - else - { - _encryptionField = new PopupField(); - _encryptionField.label = "Encryption"; - _encryptionField.style.width = StyleWidth; - encryptionContainer.Add(_encryptionField); - } - } - - // 压缩方式选项 - var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(PackageName, BuildPipeline); - _compressionField = Root.Q("Compression"); - _compressionField.Init(compressOption); - _compressionField.SetValueWithoutNotify(compressOption); - _compressionField.style.width = StyleWidth; - _compressionField.RegisterValueChangedCallback(evt => - { - AssetBundleBuilderSetting.SetPackageCompressOption(PackageName, BuildPipeline, (ECompressOption)_compressionField.value); - }); - - // 输出文件名称样式 - var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(PackageName, BuildPipeline); - _outputNameStyleField = Root.Q("FileNameStyle"); - _outputNameStyleField.Init(fileNameStyle); - _outputNameStyleField.SetValueWithoutNotify(fileNameStyle); - _outputNameStyleField.style.width = StyleWidth; - _outputNameStyleField.RegisterValueChangedCallback(evt => - { - AssetBundleBuilderSetting.SetPackageFileNameStyle(PackageName, BuildPipeline, (EFileNameStyle)_outputNameStyleField.value); - }); - - // 首包文件拷贝选项 - var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, BuildPipeline); - _copyBuildinFileOptionField = Root.Q("CopyBuildinFileOption"); - _copyBuildinFileOptionField.Init(buildinFileCopyOption); - _copyBuildinFileOptionField.SetValueWithoutNotify(buildinFileCopyOption); - _copyBuildinFileOptionField.style.width = StyleWidth; - _copyBuildinFileOptionField.RegisterValueChangedCallback(evt => - { - AssetBundleBuilderSetting.SetPackageBuildinFileCopyOption(PackageName, BuildPipeline, (EBuildinFileCopyOption)_copyBuildinFileOptionField.value); - RefreshView(); - }); - - // 首包文件拷贝参数 - var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(PackageName, BuildPipeline); - _copyBuildinFileTagsField = Root.Q("CopyBuildinFileParam"); - _copyBuildinFileTagsField.SetValueWithoutNotify(buildinFileCopyParams); - _copyBuildinFileTagsField.RegisterValueChangedCallback(evt => - { - 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