From 3949abb53f712691b490d356080262c209c17c9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E5=86=A0=E5=B3=B0?= Date: Tue, 17 Jun 2025 15:29:54 +0800 Subject: [PATCH] fix #566 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重构了资源构建页面,方便扩展自定义界面。 --- .../AssetBundleBuilderSetting.cs | 43 +-- .../AssetBundleBuilderWindow.cs | 58 ++-- .../AssetBundleBuilder/IBuildPipeline.cs | 7 +- .../VisualViewers/BuildPipelineAttribute.cs | 14 + .../BuildPipelineAttribute.cs.meta | 11 + .../VisualViewers/BuildPipelineViewerBase.cs | 314 ++++++++---------- .../VisualViewers/BuiltinBuildPipeline.meta | 8 + .../BuiltinBuildPipelineViewer.cs | 128 +++++++ .../BuiltinBuildPipelineViewer.cs.meta | 0 .../BuiltinBuildPipelineViewer.uxml} | 0 .../BuiltinBuildPipelineViewer.uxml.meta | 10 + .../BuiltinBuildPipelineViewer.cs | 57 ---- .../EditorSimulateBuildpipeline.meta | 8 + .../EditorSimulateBuildPipelineViewer.cs | 86 +++++ ...EditorSimulateBuildPipelineViewer.cs.meta} | 0 .../EditorSimulateBuildPipelineViewer.uxml | 8 + ...ditorSimulateBuildPipelineViewer.uxml.meta | 10 + .../EditorSimulateBuildpipelineViewer.cs | 70 ---- .../VisualViewers/RawfileBuildpipeline.meta | 8 + .../RawfileBuildPipelineViewer.cs | 120 +++++++ .../RawfileBuildPipelineViewer.cs.meta} | 0 .../RawfileBuildPipelineViewer.uxml | 14 + .../RawfileBuildPipelineViewer.uxml.meta | 10 + .../RawfileBuildpipelineViewer.cs | 56 ---- .../ScriptableBuildPipeline.meta | 8 + .../ScriptableBuildPipelineViewer.cs | 141 ++++++++ .../ScriptableBuildPipelineViewer.cs.meta | 0 .../ScriptableBuildPipelineViewer.uxml | 15 + .../ScriptableBuildPipelineViewer.uxml.meta} | 0 .../ScriptableBuildPipelineViewer.cs | 70 ---- .../AssetBundleCollectorSettingData.cs | 2 +- .../DisplayNameAttribute.cs | 19 -- Assets/YooAsset/Editor/EditorTools.cs | 17 + 33 files changed, 814 insertions(+), 498 deletions(-) create mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineAttribute.cs create mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineAttribute.cs.meta create mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipeline.meta create mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipeline/BuiltinBuildPipelineViewer.cs rename Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/{ => BuiltinBuildPipeline}/BuiltinBuildPipelineViewer.cs.meta (100%) rename Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/{BuildPipelineViewerBase.uxml => BuiltinBuildPipeline/BuiltinBuildPipelineViewer.uxml} (100%) create mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipeline/BuiltinBuildPipelineViewer.uxml.meta delete mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuiltinBuildPipelineViewer.cs create mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipeline.meta create mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipeline/EditorSimulateBuildPipelineViewer.cs rename Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/{EditorSimulateBuildpipelineViewer.cs.meta => EditorSimulateBuildpipeline/EditorSimulateBuildPipelineViewer.cs.meta} (100%) create mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipeline/EditorSimulateBuildPipelineViewer.uxml create mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipeline/EditorSimulateBuildPipelineViewer.uxml.meta delete mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/EditorSimulateBuildpipelineViewer.cs create mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipeline.meta create mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipeline/RawfileBuildPipelineViewer.cs rename Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/{RawfileBuildpipelineViewer.cs.meta => RawfileBuildpipeline/RawfileBuildPipelineViewer.cs.meta} (100%) create mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipeline/RawfileBuildPipelineViewer.uxml create mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipeline/RawfileBuildPipelineViewer.uxml.meta delete mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/RawfileBuildpipelineViewer.cs create mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipeline.meta create mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipeline/ScriptableBuildPipelineViewer.cs rename Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/{ => ScriptableBuildPipeline}/ScriptableBuildPipelineViewer.cs.meta (100%) create mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipeline/ScriptableBuildPipelineViewer.uxml rename Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/{BuildPipelineViewerBase.uxml.meta => ScriptableBuildPipeline/ScriptableBuildPipelineViewer.uxml.meta} (100%) delete mode 100644 Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/ScriptableBuildPipelineViewer.cs diff --git a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderSetting.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderSetting.cs index 48fb8f04..671722b4 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderSetting.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderSetting.cs @@ -6,97 +6,98 @@ 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) + public static string GetPackageEncyptionClassName(string packageName, string buildPipeline) { string key = $"{Application.productName}_{packageName}_{buildPipeline}_EncyptionClassName"; return EditorPrefs.GetString(key, string.Empty); } - public static void SetPackageEncyptionClassName(string packageName, EBuildPipeline buildPipeline, string encyptionClassName) + public static void SetPackageEncyptionClassName(string packageName, string buildPipeline, string encyptionClassName) { string key = $"{Application.productName}_{packageName}_{buildPipeline}_EncyptionClassName"; 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/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs index c97246c5..04cf64be 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/AssetBundleBuilderWindow.cs +++ b/Assets/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/Assets/YooAsset/Editor/AssetBundleBuilder/IBuildPipeline.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/IBuildPipeline.cs index 97b7f11e..5c82546f 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/IBuildPipeline.cs +++ b/Assets/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/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineAttribute.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineAttribute.cs new file mode 100644 index 00000000..24316977 --- /dev/null +++ b/Assets/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/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineAttribute.cs.meta b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineAttribute.cs.meta new file mode 100644 index 00000000..4f4c6ae2 --- /dev/null +++ b/Assets/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/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs index a25205d6..01cfbf68 100644 --- a/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs +++ b/Assets/YooAsset/Editor/AssetBundleBuilder/VisualViewers/BuildPipelineViewerBase.cs @@ -12,190 +12,35 @@ 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