private void OnGUI() { GUILayout.Label("出包工具:", EditorStyles.boldLabel); _buildMode = (BuildMode)EditorGUILayout.EnumPopup("出包方式", _buildMode); GUILayout.Space(10); // -选择目标平台类型-// _buildTarget = (BuildTarget)EditorGUILayout.EnumPopup("选择平台", _buildTarget); _versionOption = (VersionOption)EditorGUILayout.EnumPopup("版本号模式", _versionOption); EditorGUI.indentLevel++; if (_versionOption == VersionOption.CustomizeVersion) { _customizeVersion = new AppVersion(EditorGUILayout.TextField("3位(前两位0~99之间):", _customizeVersion.ToString())); } else { EditorGUILayout.LabelField("新的版本号:", GameBuilder.GetBuildVersion(_versionOption, _customizeVersion, _buildTarget).ToString()); } EditorGUI.indentLevel--; _applyAllRule = EditorGUILayout.Toggle("强制应用所有Rule", _applyAllRule); _increativeBuildAssetBundles = EditorGUILayout.Toggle("增量式构建Bundle", _increativeBuildAssetBundles); _bundleCompress = EditorGUILayout.Toggle("开启Bundle压缩", _bundleCompress); if (_buildMode != BuildMode.Patch) { GUILayout.Space(10); _hotFixOption = (HotFixOption)EditorGUILayout.EnumPopup("热更url", _hotFixOption); EditorGUI.indentLevel++; if (_hotFixOption == HotFixOption.Customize) { _hotFixUrl = EditorGUILayout.TextField("热更Url:", _hotFixUrl); } EditorGUI.indentLevel--; _development = EditorGUILayout.Toggle("开发版本:", _development); if (_buildTarget != BuildTarget.iOS) { _useMono2X = EditorGUILayout.Toggle("是否使用mono打包", _useMono2X); } if (_buildTarget == BuildTarget.Android) { _exportProject = EditorGUILayout.Toggle("是否导出工程", _exportProject); if (_exportProject) { _useGradle = EditorGUILayout.Toggle("是否使用gradle", _useGradle); } } _bundleIdentifier = EditorGUILayout.TextField("Bundle Identifier", _bundleIdentifier); _appName = EditorGUILayout.TextField("app名字", _appName); } if (GUILayout.Button("构建")) { BuildGame(); } }
private void BuildGame() { if (_hotFixOption == HotFixOption.Customize && string.IsNullOrEmpty(_hotFixUrl)) { Debug.LogError("hotFixUrl is empty"); return; } var buildPath = string.Empty; if (_buildMode != BuildMode.Patch) { buildPath = EditorUtility.SaveFilePanel( "SaveFile", PlayerPrefs.GetString("build_play_save_path"), _appName, _exportProject ? string.Empty : PlatformEditorUtils.GetAppExt(_buildTarget).Substring(1)); if (string.IsNullOrEmpty(buildPath)) { Debug.LogError("buildPath is empty"); return; } PlayerPrefs.SetString("build_play_save_path", buildPath.Replace(_appName, string.Empty)); } var buildOptions = BuildOptions.None; if (_development) { buildOptions |= BuildOptions.Development; } if (_exportProject) { buildOptions |= BuildOptions.AcceptExternalModificationsToPlayer; } GameBuilder.GameBuilderParameter para = new GameBuilder.GameBuilderParameter { BuildMode = _buildMode, BuildTarget = _buildTarget, CopyFmod = true, IncreativeBuildAssetBundles = _increativeBuildAssetBundles, BundleCompress = _bundleCompress, ApplyAllRule = _applyAllRule, BuildVersion = GameBuilder.GetBuildVersion(_versionOption, _customizeVersion, _buildTarget), BuildOptions = buildOptions, OutputPath = buildPath, UseMono2X = _useMono2X, ExportProject = _exportProject, UseGradle = _useGradle, BundleIdentifier = _bundleIdentifier, Multithreaded = true, EnableHotFix = _hotFixOption != HotFixOption.None, HotFixUrl = GameBuilder.GetHotFixUrl(_hotFixOption, _hotFixUrl), BuildNumber = DateTimeToUnixTimestamp(DateTime.Now), }; GameBuilder.BuildGame(para); }