diff --git a/Editor/BuildingUtils.cs b/Editor/BuildingUtils.cs new file mode 100644 index 0000000..bf225f5 --- /dev/null +++ b/Editor/BuildingUtils.cs @@ -0,0 +1,84 @@ +using System.Diagnostics; +using UnityEngine; +using UnityEditor; +using Debug = UnityEngine.Debug; + +public static class BuildingUtils +{ + [MenuItem("Tools/Build/Steam/Release")] + public static void SteamRelease() + { + IncreaseBuildNumber(); + BuildRelease(); + UploadSteam(); + } + + [MenuItem("Tools/Build/Steam/Development")] + public static void SteamDevelopment() + { + IncreaseBuildNumber(); + BuildDevelopment(); + UploadSteam(); + } + + + [MenuItem("Tools/Build/All Release")] + public static void BuildRelease() + { + BuildWindowsRelease(); + } + + [MenuItem("Tools/Build/All Development")] + public static void BuildDevelopment() + { + BuildWindowsDevelopment(); + } + + [MenuItem("Tools/Build/Platform/Windows/x64-Development")] + public static void BuildWindowsDevelopment() => BuildWindows(false); + + [MenuItem("Tools/Build/Platform/Windows/x64-Release")] + public static void BuildWindowsRelease() => BuildWindows(true); + + + private static void BuildWindows(bool release) + { + var buildPlayerOptions = new BuildPlayerOptions { scenes = new string[EditorBuildSettings.scenes.Length] }; + for (int i = 0; i < EditorBuildSettings.scenes.Length; i++) + { + buildPlayerOptions.scenes[i] = EditorBuildSettings.scenes[i].path; + } + + buildPlayerOptions.target = BuildTarget.StandaloneWindows64; + buildPlayerOptions.options = release ? BuildOptions.None : BuildOptions.Development; + buildPlayerOptions.locationPathName = Application.dataPath + + $"/../../{Application.productName}-Steam/ContentBuilder/content/windows/{Application.productName}.exe"; + BuildPipeline.BuildPlayer(buildPlayerOptions); + } + + private static void IncreaseBuildNumber() + { + string[] versionParts = PlayerSettings.bundleVersion.Split('.'); + if (versionParts.Length != 3 || !int.TryParse(versionParts[2], out int version)) { + Debug.LogError("IncreaseBuildNumber failed to update version " + PlayerSettings.bundleVersion); + return; + } + versionParts[2] = (version + 1).ToString(); + PlayerSettings.bundleVersion = string.Join(".", versionParts); + } + + private static void UploadSteam() + { + string command = $"cd {Application.dataPath}/../../{Application.productName}-Steam/ContentBuilder && run_build.bat"; + + var processInfo = new ProcessStartInfo("cmd.exe", $"/c {command}") + { + CreateNoWindow = false, + UseShellExecute = false + }; + var process = Process.Start(processInfo); + process.WaitForExit(); + Debug.Log(process.ExitCode); + process.Close(); + } +} \ No newline at end of file diff --git a/Editor/BuildingUtils.cs.meta b/Editor/BuildingUtils.cs.meta new file mode 100644 index 0000000..5458af4 --- /dev/null +++ b/Editor/BuildingUtils.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 1e90ce49e16b4cecb77bf258651f6209 +timeCreated: 1669642124 \ No newline at end of file