From 0c70f2756036ebb89c4a4bce3578e51303f0c52e Mon Sep 17 00:00:00 2001 From: hevinci Date: Fri, 13 Oct 2023 12:06:20 +0800 Subject: [PATCH] update editor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 编辑器界面支持本地化配置。 2. 资源构建过程中的异常输出增加错误码提示。 3. 修复了资源构建界面乱码问题。 4. 修复了自动收集着色器对依赖资源无效的问题。 --- .../AssetBundleBuilder/AssetBundleBuilder.cs | 8 +- .../AssetBundleBuilderWindow.cs | 5 +- .../AssetBundleBuilder/BuildAssetInfo.cs | 11 ++ .../AssetBundleBuilder/BuildParameters.cs | 61 ++++++---- .../BaseTasks/TaskCopyBuildinFiles.cs | 2 +- .../BaseTasks/TaskCreateManifest.cs | 16 ++- .../BaseTasks/TaskCreateReport.cs | 4 +- .../BuildPipeline/BaseTasks/TaskEncryption.cs | 5 +- .../BaseTasks/TaskGetBuildMap.cs | 38 +++++-- .../BaseTasks/TaskUpdateBundleInfo.cs | 5 +- .../BuildTasks/TaskBuilding_BBP.cs | 17 +-- .../BuildTasks/TaskCopyBuildinFiles_BBP.cs | 1 - .../BuildTasks/TaskCreateManifest_BBP.cs | 1 - .../BuildTasks/TaskCreatePackage_BBP.cs | 9 +- .../BuildTasks/TaskCreateReport_BBP.cs | 1 - .../BuildTasks/TaskEncryption_BBP.cs | 1 - .../BuildTasks/TaskGetBuildMap_BBP.cs | 1 - .../BuildTasks/TaskPrepare_BBP.cs | 4 +- .../BuildTasks/TaskUpdateBundleInfo_BBP.cs | 15 ++- .../BuildTasks/TaskVerifyBuildResult_BBP.cs | 17 ++- .../BuiltinBuildPipeline.cs | 18 +-- .../BuildTasks/TaskBuilding_RFBP.cs | 1 - .../BuildTasks/TaskCopyBuildinFiles_RFBP.cs | 1 - .../BuildTasks/TaskCreateManifest_RFBP.cs | 1 - .../BuildTasks/TaskCreatePackage_RFBP.cs | 11 +- .../BuildTasks/TaskCreateReport_RFBP.cs | 1 - .../BuildTasks/TaskGetBuildMap_RFBP.cs | 6 +- .../BuildTasks/TaskPrepare_RFBP.cs | 11 +- .../BuildTasks/TaskUpdateBundleInfo_RFBP.cs | 1 - .../RawFileBuildPipeline.cs | 16 +-- .../BuildTasks/TaskBuilding_SBP.cs | 6 +- .../BuildTasks/TaskCopyBuildinFiles_SBP.cs | 1 - .../BuildTasks/TaskCreateManifest_SBP.cs | 6 +- .../BuildTasks/TaskCreatePackage_SBP.cs | 9 +- .../BuildTasks/TaskCreateReport_SBP.cs | 1 - .../BuildTasks/TaskEncryption_SBP.cs | 1 - .../BuildTasks/TaskGetBuildMap_SBP.cs | 1 - .../BuildTasks/TaskPrepare_SBP.cs | 11 +- .../BuildTasks/TaskUpdateBundleInfo_SBP.cs | 15 ++- .../BuildTasks/TaskVerifyBuildResult_SBP.cs | 17 ++- .../ScriptableBuildPipeline/BuildTasksEx.cs | 107 +++++++++--------- .../ScriptableBuildPipeline.cs | 18 +-- .../BuildSystem/BuildLogger.cs | 7 +- .../BuildSystem/BuildRunner.cs | 10 +- .../BuildSystem/TaskAttribute.cs | 18 --- .../VisualViewers/BuildPipelineViewerBase.cs | 49 ++++---- .../BuildPipelineViewerBase.uxml | 14 +-- .../AssetBundleCollectorSettingData.cs | 1 - .../DefaultRules/DefaultAddressRule.cs | 9 -- Assets/YooAsset/Editor/ErrorCode.cs | 41 +++++++ ...askAttribute.cs.meta => ErrorCode.cs.meta} | 2 +- Assets/YooAsset/Editor/HomePage.cs | 6 +- Assets/YooAsset/Editor/Localization.meta | 8 ++ .../Editor/Localization/ILocalization.cs | 8 ++ .../Editor/Localization/ILocalization.cs.meta | 11 ++ .../Editor/Localization/LanguageKey.cs | 24 ++++ .../Editor/Localization/LanguageKey.cs.meta | 11 ++ .../YooAsset/Editor/Localization/Locales.meta | 8 ++ .../Localization/Locales/ChineseSimplified.cs | 38 +++++++ .../Locales/ChineseSimplified.cs.meta | 11 ++ .../Editor/Localization/Locales/English.cs | 7 ++ .../Localization/Locales/English.cs.meta | 11 ++ .../Editor/Localization/Localization.cs | 50 ++++++++ .../Editor/Localization/Localization.cs.meta | 11 ++ .../Editor/UIElements/UIElementsLocalize.cs | 43 +++++++ .../UIElements/UIElementsLocalize.cs.meta | 11 ++ 66 files changed, 623 insertions(+), 268 deletions(-) delete mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/TaskAttribute.cs create mode 100644 Assets/YooAsset/Editor/ErrorCode.cs rename Assets/YooAsset/Editor/{AssetBundleBuilder/BuildSystem/TaskAttribute.cs.meta => ErrorCode.cs.meta} (83%) create mode 100644 Assets/YooAsset/Editor/Localization.meta create mode 100644 Assets/YooAsset/Editor/Localization/ILocalization.cs create mode 100644 Assets/YooAsset/Editor/Localization/ILocalization.cs.meta create mode 100644 Assets/YooAsset/Editor/Localization/LanguageKey.cs create mode 100644 Assets/YooAsset/Editor/Localization/LanguageKey.cs.meta create mode 100644 Assets/YooAsset/Editor/Localization/Locales.meta create mode 100644 Assets/YooAsset/Editor/Localization/Locales/ChineseSimplified.cs create mode 100644 Assets/YooAsset/Editor/Localization/Locales/ChineseSimplified.cs.meta create mode 100644 Assets/YooAsset/Editor/Localization/Locales/English.cs create mode 100644 Assets/YooAsset/Editor/Localization/Locales/English.cs.meta create mode 100644 Assets/YooAsset/Editor/Localization/Localization.cs create mode 100644 Assets/YooAsset/Editor/Localization/Localization.cs.meta create mode 100644 Assets/YooAsset/Editor/UIElements/UIElementsLocalize.cs create mode 100644 Assets/YooAsset/Editor/UIElements/UIElementsLocalize.cs.meta diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilder.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilder.cs index f86beb6..4d60456 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilder.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilder.cs @@ -23,7 +23,7 @@ namespace YooAsset.Editor // 检测构建参数是否为空 if (buildPipeline.Count == 0) - throw new Exception($"Build pipeline is empty !"); + throw new Exception($"Build pipeline is empty !"); // 清空旧数据 _buildContext.ClearAllContext(); @@ -41,12 +41,12 @@ namespace YooAsset.Editor if (buildResult.Success) { buildResult.OutputPackageDirectory = buildParametersContext.GetPackageOutputDirectory(); - BuildLogger.Log($"{buildParameters.BuildMode} pipeline build succeed !"); + BuildLogger.Log("Resource pipeline build success"); } else { - BuildLogger.Warning($"{buildParameters.BuildMode} pipeline build failed !"); - BuildLogger.Error($"Build task failed : {buildResult.FailedTask}"); + BuildLogger.Error($"{buildParameters.BuildPipeline} build failed !"); + BuildLogger.Error($"An error occurred in build task {buildResult.FailedTask}"); BuildLogger.Error(buildResult.ErrorInfo); } diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs index 3d930d7..349c1ba 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs @@ -14,7 +14,8 @@ namespace YooAsset.Editor [MenuItem("YooAsset/AssetBundle Builder", false, 102)] public static void OpenWindow() { - AssetBundleBuilderWindow window = GetWindow("资源包构建工具", true, WindowsDefine.DockedWindowTypes); + string windowName = Localization.Language(ELanguageKey.ABB_WindowTitle); + AssetBundleBuilderWindow window = GetWindow(windowName, true, WindowsDefine.DockedWindowTypes); window.minSize = new Vector2(800, 600); } @@ -47,7 +48,7 @@ namespace YooAsset.Editor if (packageNames.Count == 0) { var label = new Label(); - label.text = "没有发现可构建的资源包"; + label.text = Localization.Language(ELanguageKey.AAB_NoPackageTips); label.style.width = 100; _toolbar.Add(label); return; diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildAssetInfo.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildAssetInfo.cs index 5f95fc5..f7f8ef1 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildAssetInfo.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildAssetInfo.cs @@ -65,6 +65,7 @@ namespace YooAsset.Editor public BuildAssetInfo(string assetPath) { CollectorType = ECollectorType.None; + BundleName = string.Empty; Address = string.Empty; AssetPath = assetPath; @@ -84,6 +85,16 @@ namespace YooAsset.Editor AllDependAssetInfos = dependAssetInfos; } + /// + /// 设置为统一的着色器包名 + /// + public void SetShaderBundleName(string packageName, bool uniqueBundleName) + { + // 获取着色器打包规则结果 + PackRuleResult shaderPackRuleResult = DefaultPackRule.CreateShadersPackRuleResult(); + BundleName = shaderPackRuleResult.GetBundleName(packageName, uniqueBundleName); + } + /// /// 添加资源的分类标签 /// 说明:原始定义的资源分类标签 diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs index 4c29215..b8eb3fd 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildParameters.cs @@ -71,14 +71,13 @@ namespace YooAsset.Editor /// 资源包加密服务类 /// public IEncryptionServices EncryptionServices; - private string _pipelineOutputDirectory = string.Empty; private string _packageOutputDirectory = string.Empty; private string _packageRootDirectory = string.Empty; private string _buildinRootDirectory = string.Empty; - + /// /// 检测构建参数是否合法 /// @@ -86,25 +85,46 @@ namespace YooAsset.Editor { // 检测当前是否正在构建资源包 if (UnityEditor.BuildPipeline.isBuildingPlayer) - throw new Exception("当前正在构建资源包,请结束后再试"); - - // 检测构建参数合法性 - if (BuildTarget == BuildTarget.NoTarget) - throw new Exception("请选择目标平台!"); - if (string.IsNullOrEmpty(PackageName)) - throw new Exception("包裹名称不能为空!"); - if (string.IsNullOrEmpty(PackageVersion)) - throw new Exception("包裹版本不能为空!"); - if (string.IsNullOrEmpty(BuildOutputRoot)) - throw new Exception("构建输出的根目录为空!"); - if (string.IsNullOrEmpty(BuildinFileRoot)) - throw new Exception("内置资源根目录为空!"); + { + string message = BuildLogger.GetErrorMessage(ErrorCode.ThePipelineIsBuiding, "The pipeline is buiding, please try again after finish !"); + throw new Exception(message); + } // 检测是否有未保存场景 if (BuildMode != EBuildMode.SimulateBuild) { if (EditorTools.HasDirtyScenes()) - throw new Exception("检测到未保存的场景文件"); + { + 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 !"); + throw new Exception(message); + } + if (string.IsNullOrEmpty(BuildinFileRoot)) + { + string message = BuildLogger.GetErrorMessage(ErrorCode.BuildinFileRootIsNullOrEmpty, "Buildin file root is null or empty !"); + throw new Exception(message); } // 强制构建删除包裹目录 @@ -113,7 +133,7 @@ namespace YooAsset.Editor string packageRootDirectory = GetPackageRootDirectory(); if (EditorTools.DeleteDirectory(packageRootDirectory)) { - BuildLogger.Log($"删除包裹目录:{packageRootDirectory}"); + BuildLogger.Log($"Delete package root directory: {packageRootDirectory}"); } } @@ -122,14 +142,17 @@ namespace YooAsset.Editor { string packageOutputDirectory = GetPackageOutputDirectory(); if (Directory.Exists(packageOutputDirectory)) - throw new Exception($"本次构建的补丁目录已经存在:{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($"创建输出目录:{pipelineOutputDirectory}"); + BuildLogger.Log($"Create pipeline output directory: {pipelineOutputDirectory}"); } } diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCopyBuildinFiles.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCopyBuildinFiles.cs index 89a9e63..430d54d 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCopyBuildinFiles.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCopyBuildinFiles.cs @@ -76,7 +76,7 @@ namespace YooAsset.Editor // 刷新目录 AssetDatabase.Refresh(); - BuildLogger.Log($"内置文件拷贝完成:{buildinRootDirectory}"); + BuildLogger.Log($"Buildin files copy complete: {buildinRootDirectory}"); } } } \ No newline at end of file diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs index 5d56879..10f3cdf 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateManifest.cs @@ -3,9 +3,6 @@ using System.Linq; using System.Collections; using System.Collections.Generic; -using UnityEditor.Build.Pipeline; -using UnityEditor.Build.Pipeline.Interfaces; - namespace YooAsset.Editor { public class ManifestContext : IContextObject @@ -55,7 +52,7 @@ namespace YooAsset.Editor string fileName = YooAssetSettingsData.GetManifestJsonFileName(buildParameters.PackageName, buildParameters.PackageVersion); string filePath = $"{packageOutputDirectory}/{fileName}"; ManifestTools.SerializeToJson(filePath, manifest); - BuildLogger.Log($"创建补丁清单文件:{filePath}"); + BuildLogger.Log($"Create package manifest file: {filePath}"); } // 创建补丁清单二进制文件 @@ -65,7 +62,7 @@ namespace YooAsset.Editor string filePath = $"{packageOutputDirectory}/{fileName}"; ManifestTools.SerializeToBinary(filePath, manifest); packageHash = HashUtility.FileMD5(filePath); - BuildLogger.Log($"创建补丁清单文件:{filePath}"); + BuildLogger.Log($"Create package manifest file: {filePath}"); ManifestContext manifestContext = new ManifestContext(); byte[] bytesData = FileUtility.ReadAllBytes(filePath); @@ -78,7 +75,7 @@ namespace YooAsset.Editor string fileName = YooAssetSettingsData.GetPackageHashFileName(buildParameters.PackageName, buildParameters.PackageVersion); string filePath = $"{packageOutputDirectory}/{fileName}"; FileUtility.WriteAllText(filePath, packageHash); - BuildLogger.Log($"创建补丁清单哈希文件:{filePath}"); + BuildLogger.Log($"Create package manifest hash file: {filePath}"); } // 创建补丁清单版本文件 @@ -86,7 +83,7 @@ namespace YooAsset.Editor string fileName = YooAssetSettingsData.GetPackageVersionFileName(buildParameters.PackageName); string filePath = $"{packageOutputDirectory}/{fileName}"; FileUtility.WriteAllText(filePath, buildParameters.PackageVersion); - BuildLogger.Log($"创建补丁清单版本文件:{filePath}"); + BuildLogger.Log($"Create package manifest version file: {filePath}"); } } @@ -190,7 +187,8 @@ namespace YooAsset.Editor else { // 注意:SBP构建管线会自动剔除一些冗余资源的引用关系,导致游离资源包没有被任何主资源包引用。 - UnityEngine.Debug.LogWarning($"发现游离的资源包 {index} ! {packageBundle.BundleName}"); + string warning = BuildLogger.GetErrorMessage(ErrorCode.FoundStrayBundle, $"Found stray bundle ! Bundle ID : {index} Bundle name : {packageBundle.BundleName}"); + BuildLogger.Warning(warning); } } } @@ -213,7 +211,7 @@ namespace YooAsset.Editor { if (_cachedBundleID.TryGetValue(bundleName, out int value) == false) { - throw new Exception($"Not found cached bundle ID : {bundleName}"); + throw new Exception($"Should never get here ! Not found bundle ID : {bundleName}"); } return value; } diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateReport.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateReport.cs index a9084b8..9593321 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateReport.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskCreateReport.cs @@ -112,7 +112,7 @@ namespace YooAsset.Editor string fileName = YooAssetSettingsData.GetReportFileName(buildParameters.PackageName, buildParameters.PackageVersion); string filePath = $"{packageOutputDirectory}/{fileName}"; BuildReport.Serialize(filePath, buildReport); - BuildLogger.Log($"资源构建报告文件创建完成:{filePath}"); + BuildLogger.Log($"Create build report file: {filePath}"); } /// @@ -148,7 +148,7 @@ namespace YooAsset.Editor } if (findAssetInfo == null) { - throw new Exception($"Not found asset {assetPath} in bunlde {bundleName}"); + throw new Exception($"Should never get here ! Not found asset {assetPath} in bunlde {bundleName}"); } foreach (var dependAssetInfo in findAssetInfo.AllDependAssetInfos) { diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskEncryption.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskEncryption.cs index f6fc36b..5950183 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskEncryption.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskEncryption.cs @@ -27,7 +27,6 @@ namespace YooAsset.Editor EncryptFileInfo fileInfo = new EncryptFileInfo(); fileInfo.BundleName = bundleInfo.BundleName; fileInfo.FilePath = $"{pipelineOutputDirectory}/{bundleInfo.BundleName}"; - var encryptResult = encryptionServices.Encrypt(fileInfo); if (encryptResult.Encrypted) { @@ -35,7 +34,7 @@ namespace YooAsset.Editor FileUtility.WriteAllBytes(filePath, encryptResult.EncryptedData); bundleInfo.EncryptedFilePath = filePath; bundleInfo.Encrypted = true; - BuildLogger.Log($"Bundle文件加密完成:{filePath}"); + BuildLogger.Log($"Bundle file encryption complete: {filePath}"); } else { @@ -43,7 +42,7 @@ namespace YooAsset.Editor } // 进度条 - EditorTools.DisplayProgressBar("加密资源包", ++progressValue, buildMapContext.Collection.Count); + EditorTools.DisplayProgressBar("Encrypting bundle", ++progressValue, buildMapContext.Collection.Count); } EditorTools.ClearProgressBar(); } diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs index 30a70c9..aecbaa0 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskGetBuildMap.cs @@ -26,7 +26,7 @@ namespace YooAsset.Editor // 2. 剔除未被引用的依赖项资源 RemoveZeroReferenceAssets(allCollectAssetInfos); - // 3. 录入所有收集器收集的资源 + // 3. 录入所有收集器主动收集的资源 foreach (var collectAssetInfo in allCollectAssetInfos) { if (allBuildAssetInfos.ContainsKey(collectAssetInfo.AssetPath) == false) @@ -36,7 +36,8 @@ namespace YooAsset.Editor if (collectAssetInfo.AssetTags.Count > 0) { collectAssetInfo.AssetTags.Clear(); - BuildLogger.Warning($"The tags has been cleared ! {collectAssetInfo.AssetPath} "); + string warning = BuildLogger.GetErrorMessage(ErrorCode.RemoveInvalidTags, $"Remove asset tags that don't work, see the asset collector type : {collectAssetInfo.AssetPath}"); + BuildLogger.Warning(warning); } } @@ -50,7 +51,7 @@ namespace YooAsset.Editor } } - // 4. 录入所有收集资源的依赖资源 + // 4. 录入所有收集资源依赖的其它资源 foreach (var collectAssetInfo in allCollectAssetInfos) { string bundleName = collectAssetInfo.BundleName; @@ -83,12 +84,27 @@ namespace YooAsset.Editor allBuildAssetInfos[collectAssetInfo.AssetPath].SetDependAssetInfos(dependAssetInfos); } - // 6. 记录关键信息 + // 6. 自动收集所有依赖的着色器 + if (collectResult.Command.AutoCollectShaders) + { + foreach (var buildAssetInfo in allBuildAssetInfos.Values) + { + if (buildAssetInfo.CollectorType == ECollectorType.None) + { + if (buildAssetInfo.AssetType == typeof(UnityEngine.Shader) || buildAssetInfo.AssetType == typeof(UnityEngine.ShaderVariantCollection)) + { + buildAssetInfo.SetShaderBundleName(collectResult.Command.PackageName, collectResult.Command.UniqueBundleName); + } + } + } + } + + // 7. 记录关键信息 BuildMapContext context = new BuildMapContext(); context.AssetFileCount = allBuildAssetInfos.Count; context.Command = collectResult.Command; - // 7. 记录冗余资源 + // 8. 记录冗余资源 foreach (var buildAssetInfo in allBuildAssetInfos.Values) { if (buildAssetInfo.IsRedundancyAsset()) @@ -103,7 +119,7 @@ namespace YooAsset.Editor } } - // 8. 移除不参与构建的资源 + // 9. 移除不参与构建的资源 List removeBuildList = new List(); foreach (var buildAssetInfo in allBuildAssetInfos.Values) { @@ -115,10 +131,13 @@ namespace YooAsset.Editor allBuildAssetInfos.Remove(removeValue.AssetPath); } - // 9. 构建资源列表 + // 10. 构建资源列表 var allPackAssets = allBuildAssetInfos.Values.ToList(); if (allPackAssets.Count == 0) - throw new Exception("构建的资源列表不能为空"); + { + string message = BuildLogger.GetErrorMessage(ErrorCode.PackAssetListIsEmpty, "The pack asset info is empty !"); + throw new Exception(message); + } foreach (var assetInfo in allPackAssets) { context.PackAsset(assetInfo); @@ -162,7 +181,8 @@ namespace YooAsset.Editor // 4. 移除所有零引用的依赖资源 foreach (var removeValue in removeList) { - BuildLogger.Warning($"发现未被依赖的资源并自动移除 : {removeValue.AssetPath}"); + string warning = BuildLogger.GetErrorMessage(ErrorCode.FoundUndependedAsset, $"Found undepended asset and remove it : {removeValue.AssetPath}"); + BuildLogger.Warning(warning); allCollectAssetInfos.Remove(removeValue); } } diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskUpdateBundleInfo.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskUpdateBundleInfo.cs index 79e07f9..e95b0c5 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskUpdateBundleInfo.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BaseTasks/TaskUpdateBundleInfo.cs @@ -23,7 +23,10 @@ namespace YooAsset.Editor // NOTE:检测文件名长度不要超过260字符。 string fileName = bundleInfo.BundleName; if (fileName.Length >= 260) - throw new Exception($"The output bundle name is too long {fileName.Length} chars : {fileName}"); + { + string message = BuildLogger.GetErrorMessage(ErrorCode.CharactersOverTheLimit, $"Bundle file name character count exceeds limit : {fileName}"); + throw new Exception(message); + } } // 2.更新构建输出的文件路径 diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskBuilding_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskBuilding_BBP.cs index 209bcfe..02bb3a2 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskBuilding_BBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskBuilding_BBP.cs @@ -7,7 +7,6 @@ using UnityEngine; namespace YooAsset.Editor { - [TaskAttribute("资源构建内容打包")] public class TaskBuilding_BBP : IBuildTask { public class BuildResultContext : IContextObject @@ -29,22 +28,26 @@ namespace YooAsset.Editor // 开始构建 string pipelineOutputDirectory = buildParametersContext.GetPipelineOutputDirectory(); BuildAssetBundleOptions buildOptions = builtinBuildParameters.GetBundleBuildOptions(); - AssetBundleManifest buildResults = BuildPipeline.BuildAssetBundles(pipelineOutputDirectory, buildMapContext.GetPipelineBuilds(), buildOptions, buildParametersContext.Parameters.BuildTarget); - if (buildResults == null) + AssetBundleManifest unityManifest = BuildPipeline.BuildAssetBundles(pipelineOutputDirectory, buildMapContext.GetPipelineBuilds(), buildOptions, buildParametersContext.Parameters.BuildTarget); + if (unityManifest == null) { - throw new Exception("构建过程中发生错误!"); + string message = BuildLogger.GetErrorMessage(ErrorCode.UnityEngineBuildFailed, "UnityEngine build failed !"); + throw new Exception(message); } if (buildMode == EBuildMode.ForceRebuild || buildMode == EBuildMode.IncrementalBuild) { string unityOutputManifestFilePath = $"{pipelineOutputDirectory}/{YooAssetSettings.OutputFolderName}"; if (System.IO.File.Exists(unityOutputManifestFilePath) == false) - throw new Exception("构建过程中发生严重错误!请查阅上下文日志!"); + { + string message = BuildLogger.GetErrorMessage(ErrorCode.UnityEngineBuildFatal, $"Not found output {nameof(AssetBundleManifest)} file : {unityOutputManifestFilePath}"); + throw new Exception(message); + } } - BuildLogger.Log("Unity引擎打包成功!"); + BuildLogger.Log("UnityEngine build success !"); BuildResultContext buildResultContext = new BuildResultContext(); - buildResultContext.UnityManifest = buildResults; + buildResultContext.UnityManifest = unityManifest; context.SetContextObject(buildResultContext); } } diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCopyBuildinFiles_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCopyBuildinFiles_BBP.cs index 28eee82..dcf4a9c 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCopyBuildinFiles_BBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCopyBuildinFiles_BBP.cs @@ -6,7 +6,6 @@ using UnityEngine; namespace YooAsset.Editor { - [TaskAttribute("拷贝内置文件")] public class TaskCopyBuildinFiles_BBP : TaskCopyBuildinFiles, IBuildTask { void IBuildTask.Run(BuildContext context) diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateManifest_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateManifest_BBP.cs index ed4fda2..919fc39 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateManifest_BBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateManifest_BBP.cs @@ -5,7 +5,6 @@ using System.Collections.Generic; namespace YooAsset.Editor { - [TaskAttribute("创建清单文件")] public class TaskCreateManifest_BBP : TaskCreateManifest, IBuildTask { private TaskBuilding_BBP.BuildResultContext _buildResultContext = null; diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreatePackage_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreatePackage_BBP.cs index d79274f..4ec89fd 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreatePackage_BBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreatePackage_BBP.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; namespace YooAsset.Editor { - [TaskAttribute("制作包裹")] public class TaskCreatePackage_BBP : IBuildTask { void IBuildTask.Run(BuildContext context) @@ -13,18 +12,18 @@ namespace YooAsset.Editor var buildMode = buildParameters.Parameters.BuildMode; if (buildMode != EBuildMode.SimulateBuild && buildMode != EBuildMode.DryRunBuild) { - CopyPackageFiles(buildParameters, buildMapContext); + CreatePackageCatalog(buildParameters, buildMapContext); } } /// /// 拷贝补丁文件到补丁包目录 /// - private void CopyPackageFiles(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext) + private void CreatePackageCatalog(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext) { string pipelineOutputDirectory = buildParametersContext.GetPipelineOutputDirectory(); string packageOutputDirectory = buildParametersContext.GetPackageOutputDirectory(); - BuildLogger.Log($"开始拷贝补丁文件到补丁包目录:{packageOutputDirectory}"); + BuildLogger.Log($"Start making patch package: {packageOutputDirectory}"); // 拷贝UnityManifest序列化文件 { @@ -46,7 +45,7 @@ namespace YooAsset.Editor foreach (var bundleInfo in buildMapContext.Collection) { EditorTools.CopyFile(bundleInfo.PackageSourceFilePath, bundleInfo.PackageDestFilePath, true); - EditorTools.DisplayProgressBar("拷贝补丁文件", ++progressValue, fileTotalCount); + EditorTools.DisplayProgressBar("Copy patch file", ++progressValue, fileTotalCount); } EditorTools.ClearProgressBar(); } diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateReport_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateReport_BBP.cs index c76809c..44ac4c2 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateReport_BBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskCreateReport_BBP.cs @@ -6,7 +6,6 @@ using UnityEditor; namespace YooAsset.Editor { - [TaskAttribute("创建构建报告文件")] public class TaskCreateReport_BBP : TaskCreateReport, IBuildTask { void IBuildTask.Run(BuildContext context) diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskEncryption_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskEncryption_BBP.cs index abb71a3..391a1b8 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskEncryption_BBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskEncryption_BBP.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; namespace YooAsset.Editor { - [TaskAttribute("资源包加密")] public class TaskEncryption_BBP : TaskEncryption, IBuildTask { void IBuildTask.Run(BuildContext context) diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskGetBuildMap_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskGetBuildMap_BBP.cs index 0daaeaa..82640fe 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskGetBuildMap_BBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskGetBuildMap_BBP.cs @@ -7,7 +7,6 @@ using UnityEditor; namespace YooAsset.Editor { - [TaskAttribute("获取资源构建内容")] public class TaskGetBuildMap_BBP : TaskGetBuildMap, IBuildTask { void IBuildTask.Run(BuildContext context) diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskPrepare_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskPrepare_BBP.cs index 44a07a8..932934a 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskPrepare_BBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskPrepare_BBP.cs @@ -6,7 +6,6 @@ using UnityEditor; namespace YooAsset.Editor { - [TaskAttribute("资源构建准备工作")] public class TaskPrepare_BBP : IBuildTask { void IBuildTask.Run(BuildContext context) @@ -22,7 +21,8 @@ namespace YooAsset.Editor #if UNITY_2021_3_OR_NEWER if (buildParameters.BuildMode != EBuildMode.SimulateBuild) { - BuildLogger.Warning("Unity2021版本开始内置构建管线不再维护,推荐使用可编程构建管线(SBP)!"); + string warning = BuildLogger.GetErrorMessage(ErrorCode.RecommendScriptBuildPipeline, $"Starting with UnityEngine2021, recommend use script build pipeline (SBP) !"); + BuildLogger.Warning(warning); } #endif } diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskUpdateBundleInfo_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskUpdateBundleInfo_BBP.cs index 1deb582..35a354c 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskUpdateBundleInfo_BBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskUpdateBundleInfo_BBP.cs @@ -6,7 +6,6 @@ using UnityEditor; namespace YooAsset.Editor { - [TaskAttribute("更新资源包信息")] public class TaskUpdateBundleInfo_BBP : TaskUpdateBundleInfo, IBuildTask { void IBuildTask.Run(BuildContext context) @@ -28,9 +27,14 @@ namespace YooAsset.Editor var buildResult = context.GetContextObject(); var hash = buildResult.UnityManifest.GetAssetBundleHash(bundleInfo.BundleName); if (hash.isValid) + { return hash.ToString(); + } else - throw new Exception($"Not found bundle hash in build result : {bundleInfo.BundleName}"); + { + 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) @@ -46,9 +50,14 @@ namespace YooAsset.Editor { string filePath = bundleInfo.BuildOutputFilePath; if (BuildPipeline.GetCRCForAssetBundle(filePath, out uint crc)) + { return crc; + } else - throw new Exception($"Not found bundle crc in build result : {bundleInfo.BundleName}"); + { + string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleCRC, $"Not found unity bundle crc : {bundleInfo.BundleName}"); + throw new Exception(message); + } } } protected override string GetBundleFileHash(string filePath, BuildParametersContext buildParametersContext) diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskVerifyBuildResult_BBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskVerifyBuildResult_BBP.cs index b3e4aaf..97b9e46 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskVerifyBuildResult_BBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuildTasks/TaskVerifyBuildResult_BBP.cs @@ -8,7 +8,6 @@ using UnityEngine; namespace YooAsset.Editor { - [TaskAttribute("验证构建结果")] public class TaskVerifyBuildResult_BBP : IBuildTask { void IBuildTask.Run(BuildContext context) @@ -46,9 +45,12 @@ namespace YooAsset.Editor { foreach (var exceptBundle in exceptBundleList1) { - BuildLogger.Warning($"差异资源包: {exceptBundle}"); + string warning = BuildLogger.GetErrorMessage(ErrorCode.UnintendedBuildBundle, $"Found unintended build bundle : {exceptBundle}"); + BuildLogger.Warning(warning); } - throw new System.Exception("存在差异资源包!请查看警告信息!"); + + string exception = BuildLogger.GetErrorMessage(ErrorCode.UnintendedBuildResult, $"Unintended build, See the detailed warnings !"); + throw new Exception(exception); } // 3. 验证Bundle @@ -57,12 +59,15 @@ namespace YooAsset.Editor { foreach (var exceptBundle in exceptBundleList2) { - BuildLogger.Warning($"差异资源包: {exceptBundle}"); + string warning = BuildLogger.GetErrorMessage(ErrorCode.UnintendedBuildBundle, $"Found unintended build bundle : {exceptBundle}"); + BuildLogger.Warning(warning); } - throw new System.Exception("存在差异资源包!请查看警告信息!"); + + string exception = BuildLogger.GetErrorMessage(ErrorCode.UnintendedBuildResult, $"Unintended build, See the detailed warnings !"); + throw new Exception(exception); } - BuildLogger.Log("构建结果验证成功!"); + BuildLogger.Log("Build results verify success!"); } } } \ No newline at end of file diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuiltinBuildPipeline.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuiltinBuildPipeline.cs index cc803f5..1938493 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuiltinBuildPipeline.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/BuiltinBuildPipeline/BuiltinBuildPipeline.cs @@ -22,15 +22,15 @@ namespace YooAsset.Editor { List pipeline = new List { - new TaskPrepare_BBP(), //前期准备工作 - new TaskGetBuildMap_BBP(), //获取构建列表 - new TaskBuilding_BBP(), //开始执行构建 - new TaskVerifyBuildResult_BBP(), //验证构建结果 - new TaskUpdateBundleInfo_BBP(), //更新资源包信息 - new TaskCreateManifest_BBP(), //创建清单文件 - new TaskCreateReport_BBP(), //创建报告文件 - new TaskCreatePackage_BBP(), //制作包裹 - new TaskCopyBuildinFiles_BBP(), //拷贝内置文件 + new TaskPrepare_BBP(), + new TaskGetBuildMap_BBP(), + new TaskBuilding_BBP(), + new TaskVerifyBuildResult_BBP(), + new TaskUpdateBundleInfo_BBP(), + new TaskCreateManifest_BBP(), + new TaskCreateReport_BBP(), + new TaskCreatePackage_BBP(), + new TaskCopyBuildinFiles_BBP(), }; return pipeline; } diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskBuilding_RFBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskBuilding_RFBP.cs index 2b65f03..6ee5a7c 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskBuilding_RFBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskBuilding_RFBP.cs @@ -5,7 +5,6 @@ using System.Collections.Generic; namespace YooAsset.Editor { - [TaskAttribute("资源构建内容打包")] public class TaskBuilding_RFBP : IBuildTask { void IBuildTask.Run(BuildContext context) diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCopyBuildinFiles_RFBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCopyBuildinFiles_RFBP.cs index a49bdae..f1a7476 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCopyBuildinFiles_RFBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCopyBuildinFiles_RFBP.cs @@ -6,7 +6,6 @@ using UnityEngine; namespace YooAsset.Editor { - [TaskAttribute("拷贝内置文件")] public class TaskCopyBuildinFiles_RFBP : TaskCopyBuildinFiles, IBuildTask { void IBuildTask.Run(BuildContext context) diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateManifest_RFBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateManifest_RFBP.cs index 919b997..faed139 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateManifest_RFBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateManifest_RFBP.cs @@ -5,7 +5,6 @@ using System.Collections.Generic; namespace YooAsset.Editor { - [TaskAttribute("创建清单文件")] public class TaskCreateManifest_RFBP : TaskCreateManifest, IBuildTask { void IBuildTask.Run(BuildContext context) diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreatePackage_RFBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreatePackage_RFBP.cs index 519076d..eb25b0f 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreatePackage_RFBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreatePackage_RFBP.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; namespace YooAsset.Editor { - [TaskAttribute("制作包裹")] public class TaskCreatePackage_RFBP : IBuildTask { void IBuildTask.Run(BuildContext context) @@ -13,19 +12,17 @@ namespace YooAsset.Editor var buildMode = buildParameters.Parameters.BuildMode; if (buildMode != EBuildMode.SimulateBuild) { - CopyPackageFiles(buildParameters, buildMapContext); + CreatePackageCatalog(buildParameters, buildMapContext); } } /// /// 拷贝补丁文件到补丁包目录 /// - private void CopyPackageFiles(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext) + private void CreatePackageCatalog(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext) { - var buildParameters = buildParametersContext.Parameters; - string pipelineOutputDirectory = buildParametersContext.GetPipelineOutputDirectory(); string packageOutputDirectory = buildParametersContext.GetPackageOutputDirectory(); - BuildLogger.Log($"开始拷贝补丁文件到补丁包目录:{packageOutputDirectory}"); + BuildLogger.Log($"Start making patch package: {packageOutputDirectory}"); // 拷贝所有补丁文件 int progressValue = 0; @@ -33,7 +30,7 @@ namespace YooAsset.Editor foreach (var bundleInfo in buildMapContext.Collection) { EditorTools.CopyFile(bundleInfo.PackageSourceFilePath, bundleInfo.PackageDestFilePath, true); - EditorTools.DisplayProgressBar("拷贝补丁文件", ++progressValue, fileTotalCount); + EditorTools.DisplayProgressBar("Copy patch file", ++progressValue, fileTotalCount); } EditorTools.ClearProgressBar(); } diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateReport_RFBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateReport_RFBP.cs index 564dead..f85e35c 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateReport_RFBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskCreateReport_RFBP.cs @@ -6,7 +6,6 @@ using UnityEditor; namespace YooAsset.Editor { - [TaskAttribute("创建构建报告文件")] public class TaskCreateReport_RFBP : TaskCreateReport, IBuildTask { void IBuildTask.Run(BuildContext context) diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskGetBuildMap_RFBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskGetBuildMap_RFBP.cs index 9d06a0a..181ec3e 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskGetBuildMap_RFBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskGetBuildMap_RFBP.cs @@ -7,7 +7,6 @@ using UnityEditor; namespace YooAsset.Editor { - [TaskAttribute("获取资源构建内容")] public class TaskGetBuildMap_RFBP : TaskGetBuildMap, IBuildTask { void IBuildTask.Run(BuildContext context) @@ -29,7 +28,10 @@ namespace YooAsset.Editor foreach (var bundleInfo in buildMapContext.Collection) { if (bundleInfo.MainAssets.Count != 1) - throw new Exception($"The bundle does not support multiple raw asset : {bundleInfo.BundleName}"); + { + string message = BuildLogger.GetErrorMessage(ErrorCode.NotSupportMultipleRawAsset, $"The bundle does not support multiple raw asset : {bundleInfo.BundleName}"); + throw new Exception(message); + } } } } diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskPrepare_RFBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskPrepare_RFBP.cs index bbdbeab..2e5987b 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskPrepare_RFBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskPrepare_RFBP.cs @@ -6,7 +6,6 @@ using UnityEditor; namespace YooAsset.Editor { - [TaskAttribute("资源构建准备工作")] public class TaskPrepare_RFBP : IBuildTask { void IBuildTask.Run(BuildContext context) @@ -19,9 +18,15 @@ namespace YooAsset.Editor // 检测不被支持的构建模式 if (buildParameters.BuildMode == EBuildMode.DryRunBuild) - throw new Exception($"{nameof(EBuildPipeline.ScriptableBuildPipeline)} not support {nameof(EBuildMode.DryRunBuild)} build mode !"); + { + 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) - throw new Exception($"{nameof(EBuildPipeline.ScriptableBuildPipeline)} not support {nameof(EBuildMode.IncrementalBuild)} build mode !"); + { + string message = BuildLogger.GetErrorMessage(ErrorCode.BuildPipelineNotSupportBuildMode, $"{nameof(EBuildPipeline.RawFileBuildPipeline)} not support {nameof(EBuildMode.IncrementalBuild)} build mode !"); + throw new Exception(message); + } } } } \ No newline at end of file diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskUpdateBundleInfo_RFBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskUpdateBundleInfo_RFBP.cs index d9337b0..adddcd2 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskUpdateBundleInfo_RFBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/BuildTasks/TaskUpdateBundleInfo_RFBP.cs @@ -6,7 +6,6 @@ using UnityEditor; namespace YooAsset.Editor { - [TaskAttribute("更新资源包信息")] public class TaskUpdateBundleInfo_RFBP : TaskUpdateBundleInfo, IBuildTask { void IBuildTask.Run(BuildContext context) diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/RawFileBuildPipeline.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/RawFileBuildPipeline.cs index bad9705..517e04e 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/RawFileBuildPipeline.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/RawFileBuildPipeline/RawFileBuildPipeline.cs @@ -22,14 +22,14 @@ namespace YooAsset.Editor { List pipeline = new List { - new TaskPrepare_RFBP(), //前期准备工作 - new TaskGetBuildMap_RFBP(), //获取构建列表 - new TaskBuilding_RFBP(), //开始执行构建 - new TaskUpdateBundleInfo_RFBP(), //更新资源包信息 - new TaskCreateManifest_RFBP(), //创建清单文件 - new TaskCreateReport_RFBP(), //创建报告文件 - new TaskCreatePackage_RFBP(), //制作包裹 - new TaskCopyBuildinFiles_RFBP(), //拷贝内置文件 + new TaskPrepare_RFBP(), + new TaskGetBuildMap_RFBP(), + new TaskBuilding_RFBP(), + new TaskUpdateBundleInfo_RFBP(), + new TaskCreateManifest_RFBP(), + new TaskCreateReport_RFBP(), + new TaskCreatePackage_RFBP(), + new TaskCopyBuildinFiles_RFBP(), }; return pipeline; } diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskBuilding_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskBuilding_SBP.cs index 11746a2..3617741 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskBuilding_SBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskBuilding_SBP.cs @@ -8,7 +8,6 @@ using UnityEditor.Build.Pipeline.Tasks; namespace YooAsset.Editor { - [TaskAttribute("资源构建内容打包")] public class TaskBuilding_SBP : IBuildTask { public class BuildResultContext : IContextObject @@ -37,7 +36,8 @@ namespace YooAsset.Editor ReturnCode exitCode = ContentPipeline.BuildAssetBundles(buildParameters, buildContent, out buildResults, taskList); if (exitCode < 0) { - throw new Exception($"构建过程中发生错误 : {exitCode}"); + string message = BuildLogger.GetErrorMessage(ErrorCode.UnityEngineBuildFailed, $"UnityEngine build failed ! ReturnCode : {exitCode}"); + throw new Exception(message); } // 创建着色器信息 @@ -49,7 +49,7 @@ namespace YooAsset.Editor buildMapContext.CreateShadersBundleInfo(shadersBundleName); } - BuildLogger.Log("Unity引擎打包成功!"); + BuildLogger.Log("UnityEngine build success!"); BuildResultContext buildResultContext = new BuildResultContext(); buildResultContext.Results = buildResults; context.SetContextObject(buildResultContext); diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCopyBuildinFiles_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCopyBuildinFiles_SBP.cs index 16c9b01..90a46f7 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCopyBuildinFiles_SBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCopyBuildinFiles_SBP.cs @@ -6,7 +6,6 @@ using UnityEngine; namespace YooAsset.Editor { - [TaskAttribute("拷贝内置文件")] public class TaskCopyBuildinFiles_SBP : TaskCopyBuildinFiles, IBuildTask { void IBuildTask.Run(BuildContext context) diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateManifest_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateManifest_SBP.cs index 29f1b85..f208529 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateManifest_SBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateManifest_SBP.cs @@ -7,7 +7,6 @@ using UnityEditor.Build.Pipeline.Interfaces; namespace YooAsset.Editor { - [TaskAttribute("创建清单文件")] public class TaskCreateManifest_SBP : TaskCreateManifest, IBuildTask { private TaskBuilding_SBP.BuildResultContext _buildResultContext = null; @@ -23,7 +22,10 @@ namespace YooAsset.Editor _buildResultContext = context.GetContextObject(); if (_buildResultContext.Results.BundleInfos.ContainsKey(bundleName) == false) - throw new Exception($"Not found bundle in SBP build results : {bundleName}"); + { + string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleInBuildResult, $"Not found bundle in engine build result : {bundleName}"); + throw new Exception(message); + } return _buildResultContext.Results.BundleInfos[bundleName].Dependencies; } } diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreatePackage_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreatePackage_SBP.cs index a8c62bd..ca41eb3 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreatePackage_SBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreatePackage_SBP.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; namespace YooAsset.Editor { - [TaskAttribute("制作包裹")] public class TaskCreatePackage_SBP : IBuildTask { void IBuildTask.Run(BuildContext context) @@ -13,19 +12,19 @@ namespace YooAsset.Editor var buildMode = buildParameters.Parameters.BuildMode; if (buildMode != EBuildMode.SimulateBuild) { - CopyPackageFiles(buildParameters, buildMapContext); + CreatePackageCatalog(buildParameters, buildMapContext); } } /// /// 拷贝补丁文件到补丁包目录 /// - private void CopyPackageFiles(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext) + private void CreatePackageCatalog(BuildParametersContext buildParametersContext, BuildMapContext buildMapContext) { var scriptableBuildParameters = buildParametersContext.Parameters as ScriptableBuildParameters; string pipelineOutputDirectory = buildParametersContext.GetPipelineOutputDirectory(); string packageOutputDirectory = buildParametersContext.GetPackageOutputDirectory(); - BuildLogger.Log($"开始拷贝补丁文件到补丁包目录:{packageOutputDirectory}"); + BuildLogger.Log($"Start making patch package: {packageOutputDirectory}"); // 拷贝构建日志 { @@ -48,7 +47,7 @@ namespace YooAsset.Editor foreach (var bundleInfo in buildMapContext.Collection) { EditorTools.CopyFile(bundleInfo.PackageSourceFilePath, bundleInfo.PackageDestFilePath, true); - EditorTools.DisplayProgressBar("拷贝补丁文件", ++progressValue, fileTotalCount); + EditorTools.DisplayProgressBar("Copy patch file", ++progressValue, fileTotalCount); } EditorTools.ClearProgressBar(); } diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateReport_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateReport_SBP.cs index 8748b89..36d093c 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateReport_SBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskCreateReport_SBP.cs @@ -6,7 +6,6 @@ using UnityEditor; namespace YooAsset.Editor { - [TaskAttribute("创建构建报告文件")] public class TaskCreateReport_SBP : TaskCreateReport, IBuildTask { void IBuildTask.Run(BuildContext context) diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskEncryption_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskEncryption_SBP.cs index 6f5e797..b0f009a 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskEncryption_SBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskEncryption_SBP.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; namespace YooAsset.Editor { - [TaskAttribute("资源包加密")] public class TaskEncryption_SBP : TaskEncryption, IBuildTask { void IBuildTask.Run(BuildContext context) diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskGetBuildMap_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskGetBuildMap_SBP.cs index 52e7c02..536202c 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskGetBuildMap_SBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskGetBuildMap_SBP.cs @@ -7,7 +7,6 @@ using UnityEditor; namespace YooAsset.Editor { - [TaskAttribute("获取资源构建内容")] public class TaskGetBuildMap_SBP : TaskGetBuildMap, IBuildTask { void IBuildTask.Run(BuildContext context) diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskPrepare_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskPrepare_SBP.cs index de89cc3..bc38545 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskPrepare_SBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskPrepare_SBP.cs @@ -6,7 +6,6 @@ using UnityEditor; namespace YooAsset.Editor { - [TaskAttribute("资源构建准备工作")] public class TaskPrepare_SBP : IBuildTask { void IBuildTask.Run(BuildContext context) @@ -19,9 +18,15 @@ namespace YooAsset.Editor // 检测不被支持的构建模式 if (buildParameters.BuildMode == EBuildMode.DryRunBuild) - throw new Exception($"{nameof(EBuildPipeline.ScriptableBuildPipeline)} not support {nameof(EBuildMode.DryRunBuild)} build mode !"); + { + string message = BuildLogger.GetErrorMessage(ErrorCode.BuildPipelineNotSupportBuildMode, $"{nameof(EBuildPipeline.ScriptableBuildPipeline)} not support {nameof(EBuildMode.DryRunBuild)} build mode !"); + throw new Exception(message); + } if (buildParameters.BuildMode == EBuildMode.ForceRebuild) - throw new Exception($"{nameof(EBuildPipeline.ScriptableBuildPipeline)} not support {nameof(EBuildMode.ForceRebuild)} build mode !"); + { + string message = BuildLogger.GetErrorMessage(ErrorCode.BuildPipelineNotSupportBuildMode, $"{nameof(EBuildPipeline.ScriptableBuildPipeline)} not support {nameof(EBuildMode.ForceRebuild)} build mode !"); + throw new Exception(message); + } } } } \ No newline at end of file diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskUpdateBundleInfo_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskUpdateBundleInfo_SBP.cs index b09ce8f..81d258d 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskUpdateBundleInfo_SBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskUpdateBundleInfo_SBP.cs @@ -6,7 +6,6 @@ using UnityEditor; namespace YooAsset.Editor { - [TaskAttribute("更新资源包信息")] public class TaskUpdateBundleInfo_SBP : TaskUpdateBundleInfo, IBuildTask { void IBuildTask.Run(BuildContext context) @@ -28,9 +27,14 @@ namespace YooAsset.Editor // 注意:当资源包的依赖列表发生变化的时候,ContentHash也会发生变化! var buildResult = context.GetContextObject(); if (buildResult.Results.BundleInfos.TryGetValue(bundleInfo.BundleName, out var value)) + { return value.Hash.ToString(); + } else - throw new Exception($"Not found bundle hash in build result : {bundleInfo.BundleName}"); + { + 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) @@ -46,9 +50,14 @@ namespace YooAsset.Editor { var buildResult = context.GetContextObject(); if (buildResult.Results.BundleInfos.TryGetValue(bundleInfo.BundleName, out var value)) + { return value.Crc; + } else - throw new Exception($"Not found bundle crc in build result : {bundleInfo.BundleName}"); + { + string message = BuildLogger.GetErrorMessage(ErrorCode.NotFoundUnityBundleCRC, $"Not found unity bundle crc : {bundleInfo.BundleName}"); + throw new Exception(message); + } } } protected override string GetBundleFileHash(string filePath, BuildParametersContext buildParametersContext) diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskVerifyBuildResult_SBP.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskVerifyBuildResult_SBP.cs index a3e6bb8..1d62d7a 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskVerifyBuildResult_SBP.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasks/TaskVerifyBuildResult_SBP.cs @@ -9,7 +9,6 @@ using UnityEditor.Build.Pipeline.Interfaces; namespace YooAsset.Editor { - [TaskAttribute("验证构建结果")] public class TaskVerifyBuildResult_SBP : IBuildTask { void IBuildTask.Run(BuildContext context) @@ -47,9 +46,12 @@ namespace YooAsset.Editor { foreach (var exceptBundle in exceptBundleList1) { - BuildLogger.Warning($"差异资源包: {exceptBundle}"); + string warning = BuildLogger.GetErrorMessage(ErrorCode.UnintendedBuildBundle, $"Found unintended build bundle : {exceptBundle}"); + BuildLogger.Warning(warning); } - throw new System.Exception("存在差异资源包!请查看警告信息!"); + + string exception = BuildLogger.GetErrorMessage(ErrorCode.UnintendedBuildResult, $"Unintended build, See the detailed warnings !"); + throw new Exception(exception); } // 3. 验证Bundle @@ -58,12 +60,15 @@ namespace YooAsset.Editor { foreach (var exceptBundle in exceptBundleList2) { - BuildLogger.Warning($"差异资源包: {exceptBundle}"); + string warning = BuildLogger.GetErrorMessage(ErrorCode.UnintendedBuildBundle, $"Found unintended build bundle : {exceptBundle}"); + BuildLogger.Warning(warning); } - throw new System.Exception("存在差异资源包!请查看警告信息!"); + + string exception = BuildLogger.GetErrorMessage(ErrorCode.UnintendedBuildResult, $"Unintended build, See the detailed warnings !"); + throw new Exception(exception); } - BuildLogger.Log("构建结果验证成功!"); + BuildLogger.Log("Build results verify success!"); } } } \ No newline at end of file diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasksEx.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasksEx.cs index 282662c..fe0585d 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasksEx.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/BuildTasksEx.cs @@ -4,67 +4,64 @@ using UnityEngine.U2D; using UnityEditor.Build.Pipeline.Injector; using UnityEditor.Build.Pipeline.Interfaces; using UnityEngine; -using System.Linq; namespace UnityEditor.Build.Pipeline.Tasks { - /// - /// Ref https://zhuanlan.zhihu.com/p/586918159 - /// - public class RemoveSpriteAtlasRedundancy : IBuildTask - { - /// - public int Version => 1; + /// + /// Ref https://zhuanlan.zhihu.com/p/586918159 + /// + public class RemoveSpriteAtlasRedundancy : IBuildTask + { + public int Version => 1; - [InjectContext] - IBundleWriteData writeDataParam; + [InjectContext] + IBundleWriteData writeDataParam; - /// - public ReturnCode Run() - { - BundleWriteData writeData = (BundleWriteData)writeDataParam; + public ReturnCode Run() + { +#if UNITY_2020_3_OR_NEWER + BundleWriteData writeData = (BundleWriteData)writeDataParam; - // 所有图集散图的 guid 集合 - HashSet spriteGuids = new HashSet(); + // 图集引用的精灵图片集合 + HashSet spriteGuids = new HashSet(); + foreach (var pair in writeData.FileToObjects) + { + foreach (ObjectIdentifier objectIdentifier in pair.Value) + { + var assetPath = AssetDatabase.GUIDToAssetPath(objectIdentifier.guid); + var assetType = AssetDatabase.GetMainAssetTypeAtPath(assetPath); + if (assetType == typeof(SpriteAtlas)) + { + var spritePaths = AssetDatabase.GetDependencies(assetPath, false); + foreach (string spritePath in spritePaths) + { + GUID spriteGuild = AssetDatabase.GUIDFromAssetPath(spritePath); + spriteGuids.Add(spriteGuild); + } + } + } + } - // 遍历资源包里的资源记录其中图集的散图 guid - foreach (var pair in writeData.FileToObjects) - { - foreach (ObjectIdentifier objectIdentifier in pair.Value) - { - string path = AssetDatabase.GUIDToAssetPath(objectIdentifier.guid); - Object asset = AssetDatabase.LoadAssetAtPath(path); - if (asset is SpriteAtlas) - { - List spritePaths = AssetDatabase.GetDependencies(path, false).ToList(); - foreach (string spritePath in spritePaths) - { - GUID spriteGuild = AssetDatabase.GUIDFromAssetPath(spritePath); - spriteGuids.Add(spriteGuild); - } - } - } - } + // 移除图集引用的精力图片对象 + foreach (var pair in writeData.FileToObjects) + { + List objectIdentifiers = pair.Value; + for (int i = objectIdentifiers.Count - 1; i >= 0; i--) + { + ObjectIdentifier objectIdentifier = objectIdentifiers[i]; + if (spriteGuids.Contains(objectIdentifier.guid)) + { + if (objectIdentifier.localIdentifierInFile == 2800000) + { + // 删除图集散图的冗余纹理 + objectIdentifiers.RemoveAt(i); + } + } + } + } +#endif - // 将 writeData.FileToObjects 包含的图集散图的 texture 删掉避免冗余 - foreach (var pair in writeData.FileToObjects) - { - List objectIdentifiers = pair.Value; - for (int i = objectIdentifiers.Count - 1; i >= 0; i--) - { - ObjectIdentifier objectIdentifier = objectIdentifiers[i]; - if (spriteGuids.Contains(objectIdentifier.guid)) - { - if (objectIdentifier.localIdentifierInFile == 2800000) - { - // 删除图集散图的冗余 texture - objectIdentifiers.RemoveAt(i); - } - } - } - } - - return ReturnCode.Success; - } - } + return ReturnCode.Success; + } + } } \ No newline at end of file diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/ScriptableBuildPipeline.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/ScriptableBuildPipeline.cs index 03037c9..7fd6c5c 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/ScriptableBuildPipeline.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildPipeline/ScriptableBuildPipeline/ScriptableBuildPipeline.cs @@ -22,15 +22,15 @@ namespace YooAsset.Editor { List pipeline = new List { - new TaskPrepare_SBP(), //前期准备工作 - new TaskGetBuildMap_SBP(), //获取构建列表 - new TaskBuilding_SBP(), //开始执行构建 - new TaskVerifyBuildResult_SBP(), //验证构建结果 - new TaskUpdateBundleInfo_SBP(), //更新补丁信息 - new TaskCreateManifest_SBP(), //创建清单文件 - new TaskCreateReport_SBP(), //创建报告文件 - new TaskCreatePackage_SBP(), //制作补丁包 - new TaskCopyBuildinFiles_SBP(), //拷贝内置文件 + new TaskPrepare_SBP(), + new TaskGetBuildMap_SBP(), + new TaskBuilding_SBP(), + new TaskVerifyBuildResult_SBP(), + new TaskUpdateBundleInfo_SBP(), + new TaskCreateManifest_SBP(), + new TaskCreateReport_SBP(), + new TaskCreatePackage_SBP(), + new TaskCopyBuildinFiles_SBP(), }; return pipeline; } diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/BuildLogger.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/BuildLogger.cs index 2d6026c..569db6d 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/BuildLogger.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/BuildLogger.cs @@ -5,7 +5,7 @@ using UnityEngine; namespace YooAsset.Editor { - public static class BuildLogger + internal static class BuildLogger { private static bool _enableLog = true; @@ -29,5 +29,10 @@ namespace YooAsset.Editor { Debug.LogError(message); } + + public static string GetErrorMessage(ErrorCode code, string message) + { + return $"[ErrorCode{(int)code}] {message}"; + } } } \ No newline at end of file diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/BuildRunner.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/BuildRunner.cs index 7943ad6..d488e86 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/BuildRunner.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/BuildRunner.cs @@ -36,17 +36,15 @@ namespace YooAsset.Editor try { _buildWatch = Stopwatch.StartNew(); - var taskAttribute = task.GetType().GetCustomAttribute(); - if (taskAttribute != null) - BuildLogger.Log($"---------------------------------------->{taskAttribute.TaskDesc}<---------------------------------------"); + string taskName = task.GetType().Name.Split('_')[0]; + BuildLogger.Log($"--------------------------------------------->{taskName}<--------------------------------------------"); task.Run(context); _buildWatch.Stop(); // 统计耗时 int seconds = GetBuildSeconds(); TotalSeconds += seconds; - if (taskAttribute != null) - BuildLogger.Log($"{taskAttribute.TaskDesc}耗时:{seconds}秒"); + BuildLogger.Log($"{taskName} It takes {seconds} seconds in total"); } catch (Exception e) { @@ -59,7 +57,7 @@ namespace YooAsset.Editor } // 返回运行结果 - BuildLogger.Log($"构建过程总计耗时:{TotalSeconds}秒"); + BuildLogger.Log($"Total build process time: {TotalSeconds} seconds"); return buildResult; } diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/TaskAttribute.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/TaskAttribute.cs deleted file mode 100644 index a877b65..0000000 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/BuildSystem/TaskAttribute.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; - -namespace YooAsset.Editor -{ - [AttributeUsage(AttributeTargets.Class)] - public class TaskAttribute : Attribute - { - /// - /// 任务说明 - /// - public string TaskDesc; - - public TaskAttribute(string taskDesc) - { - TaskDesc = taskDesc; - } - } -} \ No newline at end of file diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs index f006492..05053bf 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs @@ -39,7 +39,7 @@ namespace YooAsset.Editor } private void CreateView(VisualElement parent) { - // زļ + // 加载布局文件 var visualAsset = UxmlLoader.LoadWindowUXML(); if (visualAsset == null) return; @@ -48,25 +48,25 @@ namespace YooAsset.Editor 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 buildModeContainer = Root.Q("BuildModeContainer"); var buildMode = AssetBundleBuilderSetting.GetPackageBuildMode(PackageName, BuildPipeline); var buildModeList = GetSupportBuildModes(); int defaultIndex = buildModeList.FindIndex(x => x.Equals(buildMode)); _buildModeField = new PopupField(buildModeList, defaultIndex); - _buildModeField.label = "BuildMode"; + _buildModeField.label = "ABB_BuildMode"; _buildModeField.style.width = StyleWidth; _buildModeField.RegisterValueChangedCallback(evt => { @@ -75,7 +75,7 @@ namespace YooAsset.Editor buildModeContainer.Add(_buildModeField); } - // ܷ + // 加密方法 { var encryptionContainer = Root.Q("EncryptionContainer"); var encryptionClassTypes = EditorTools.GetAssignableTypes(typeof(IEncryptionServices)); @@ -84,7 +84,7 @@ namespace YooAsset.Editor var encyptionClassName = AssetBundleBuilderSetting.GetPackageEncyptionClassName(PackageName, BuildPipeline); int defaultIndex = encryptionClassTypes.FindIndex(x => x.FullName.Equals(encyptionClassName)); _encryptionField = new PopupField(encryptionClassTypes, defaultIndex); - _encryptionField.label = "Encryption"; + _encryptionField.label = "ABB_Encryption"; _encryptionField.style.width = StyleWidth; _encryptionField.RegisterValueChangedCallback(evt => { @@ -95,13 +95,13 @@ namespace YooAsset.Editor else { _encryptionField = new PopupField(); - _encryptionField.label = "Encryption"; + _encryptionField.label = "ABB_Encryption"; _encryptionField.style.width = StyleWidth; encryptionContainer.Add(_encryptionField); } } - // ѹʽѡ + // 压缩方式选项 var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(PackageName, BuildPipeline); _compressionField = Root.Q("Compression"); _compressionField.Init(compressOption); @@ -112,7 +112,7 @@ namespace YooAsset.Editor AssetBundleBuilderSetting.SetPackageCompressOption(PackageName, BuildPipeline, (ECompressOption)_compressionField.value); }); - // ļʽ + // 输出文件名称样式 var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(PackageName, BuildPipeline); _outputNameStyleField = Root.Q("FileNameStyle"); _outputNameStyleField.Init(fileNameStyle); @@ -123,7 +123,7 @@ namespace YooAsset.Editor AssetBundleBuilderSetting.SetPackageFileNameStyle(PackageName, BuildPipeline, (EFileNameStyle)_outputNameStyleField.value); }); - // װļѡ + // 首包文件拷贝选项 var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, BuildPipeline); _copyBuildinFileOptionField = Root.Q("CopyBuildinFileOption"); _copyBuildinFileOptionField.Init(buildinFileCopyOption); @@ -135,7 +135,7 @@ namespace YooAsset.Editor RefreshView(); }); - // װļ + // 首包文件拷贝参数 var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(PackageName, BuildPipeline); _copyBuildinFileTagsField = Root.Q("CopyBuildinFileTags"); _copyBuildinFileTagsField.SetValueWithoutNotify(buildinFileCopyParams); @@ -144,9 +144,20 @@ namespace YooAsset.Editor AssetBundleBuilderSetting.SetPackageBuildinFileCopyParams(PackageName, BuildPipeline, _copyBuildinFileTagsField.value); }); - // ť + // 构建按钮 var buildButton = Root.Q