/// <summary> /// 执行构建 /// </summary> private void ExecuteBuild() { string defaultOutputRoot = AssetBundleBuilderHelper.GetDefaultOutputRoot(); BuildParameters buildParameters = new BuildParameters(); buildParameters.OutputRoot = defaultOutputRoot; buildParameters.BuildTarget = _buildTarget; buildParameters.BuildMode = (EBuildMode)_buildModeField.value; buildParameters.BuildVersion = _buildVersionField.value; buildParameters.BuildinTags = _buildinTagsField.value; buildParameters.VerifyBuildingResult = true; buildParameters.EnableAddressable = AssetBundleCollectorSettingData.Setting.EnableAddressable; buildParameters.AppendFileExtension = _appendExtensionToggle.value; buildParameters.CopyBuildinTagFiles = _copyBuildinTagFilesToggle.value; buildParameters.EncryptionServices = CreateEncryptionServicesInstance(); buildParameters.CompressOption = (ECompressOption)_compressionField.value; AssetBundleBuilder builder = new AssetBundleBuilder(); builder.Run(buildParameters); }
/// <summary> /// 模拟构建 /// </summary> public static void SimulateBuild() { string defaultOutputRoot = AssetBundleBuilderHelper.GetDefaultOutputRoot(); BuildParameters buildParameters = new BuildParameters(); buildParameters.OutputRoot = defaultOutputRoot; buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget; buildParameters.BuildMode = EBuildMode.SimulateBuild; buildParameters.BuildVersion = 999; buildParameters.EnableAddressable = AssetBundleCollectorSettingData.Setting.EnableAddressable; AssetBundleBuilder builder = new AssetBundleBuilder(); bool buildResult = builder.Run(buildParameters); if (buildResult) { string pipelineOutputDirectory = AssetBundleBuilderHelper.MakePipelineOutputDirectory(buildParameters.OutputRoot, buildParameters.BuildTarget); _manifestFilePath = $"{pipelineOutputDirectory}_{EBuildMode.SimulateBuild}/{YooAssetSettingsData.GetPatchManifestFileName(buildParameters.BuildVersion)}"; } else { _manifestFilePath = null; } }
public void CreateGUI() { try { VisualElement root = this.rootVisualElement; // 加载布局文件 var visualAsset = EditorHelper.LoadWindowUXML <AssetBundleBuilderWindow>(); if (visualAsset == null) { return; } visualAsset.CloneTree(root); _buildTarget = EditorUserBuildSettings.activeBuildTarget; _encryptionServicesClassTypes = GetEncryptionServicesClassTypes(); _encryptionServicesClassNames = _encryptionServicesClassTypes.Select(t => t.FullName).ToList(); // 输出目录 string defaultOutputRoot = AssetBundleBuilderHelper.GetDefaultOutputRoot(); string pipelineOutputDirectory = AssetBundleBuilderHelper.MakePipelineOutputDirectory(defaultOutputRoot, _buildTarget); _buildOutputField = root.Q <TextField>("BuildOutput"); _buildOutputField.SetValueWithoutNotify(pipelineOutputDirectory); _buildOutputField.SetEnabled(false); // 构建版本 _buildVersionField = root.Q <IntegerField>("BuildVersion"); _buildVersionField.SetValueWithoutNotify(AssetBundleBuilderSettingData.Setting.BuildVersion); _buildVersionField.RegisterValueChangedCallback(evt => { AssetBundleBuilderSettingData.Setting.BuildVersion = _buildVersionField.value; }); // 构建模式 _buildModeField = root.Q <EnumField>("BuildMode"); _buildModeField.Init(AssetBundleBuilderSettingData.Setting.BuildMode); _buildModeField.SetValueWithoutNotify(AssetBundleBuilderSettingData.Setting.BuildMode); _buildModeField.style.width = 300; _buildModeField.RegisterValueChangedCallback(evt => { AssetBundleBuilderSettingData.Setting.BuildMode = (EBuildMode)_buildModeField.value; RefreshWindow(); }); // 内置资源标签 _buildinTagsField = root.Q <TextField>("BuildinTags"); _buildinTagsField.SetValueWithoutNotify(AssetBundleBuilderSettingData.Setting.BuildTags); _buildinTagsField.RegisterValueChangedCallback(evt => { AssetBundleBuilderSettingData.Setting.BuildTags = _buildinTagsField.value; }); // 加密方法 var encryptionContainer = root.Q("EncryptionContainer"); if (_encryptionServicesClassNames.Count > 0) { int defaultIndex = GetEncryptionDefaultIndex(AssetBundleBuilderSettingData.Setting.EncyptionClassName); _encryptionField = new PopupField <string>(_encryptionServicesClassNames, defaultIndex); _encryptionField.label = "Encryption"; _encryptionField.style.width = 300; _encryptionField.RegisterValueChangedCallback(evt => { AssetBundleBuilderSettingData.Setting.EncyptionClassName = _encryptionField.value; }); encryptionContainer.Add(_encryptionField); } else { _encryptionField = new PopupField <string>(); _encryptionField.label = "Encryption"; _encryptionField.style.width = 300; encryptionContainer.Add(_encryptionField); } // 压缩方式 _compressionField = root.Q <EnumField>("Compression"); _compressionField.Init(AssetBundleBuilderSettingData.Setting.CompressOption); _compressionField.SetValueWithoutNotify(AssetBundleBuilderSettingData.Setting.CompressOption); _compressionField.style.width = 300; _compressionField.RegisterValueChangedCallback(evt => { AssetBundleBuilderSettingData.Setting.CompressOption = (ECompressOption)_compressionField.value; }); // 附加后缀格式 _appendExtensionToggle = root.Q <Toggle>("AppendExtension"); _appendExtensionToggle.SetValueWithoutNotify(AssetBundleBuilderSettingData.Setting.AppendExtension); _appendExtensionToggle.RegisterValueChangedCallback(evt => { AssetBundleBuilderSettingData.Setting.AppendExtension = _appendExtensionToggle.value; }); // 拷贝首包文件 _copyBuildinTagFilesToggle = root.Q <Toggle>("CopyBuildinFiles"); _copyBuildinTagFilesToggle.SetValueWithoutNotify(AssetBundleBuilderSettingData.Setting.CopyBuildinTagFiles); _copyBuildinTagFilesToggle.RegisterValueChangedCallback(evt => { AssetBundleBuilderSettingData.Setting.CopyBuildinTagFiles = _copyBuildinTagFilesToggle.value; }); // 构建按钮 var buildButton = root.Q <Button>("Build"); buildButton.clicked += BuildButton_clicked;; RefreshWindow(); } catch (Exception e) { Debug.LogError(e.ToString()); } }