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