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); }