Last active
November 27, 2020 16:35
-
-
Save Sov3rain/4cd89e69809693fcca1079a87d3c9009 to your computer and use it in GitHub Desktop.
A simple Editor Script to increment versions in Unity
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using UnityEditor; | |
using UnityEditor.Build; | |
using UnityEditor.Build.Reporting; | |
using UnityEngine; | |
[InitializeOnLoad] | |
class VersionIncrementor : IPreprocessBuildWithReport | |
{ | |
public int callbackOrder => 0; | |
[MenuItem("Build/Increase Build Version and Platforms Version &v")] | |
static void IncreaseBuildAndPlatformsVersion() | |
{ | |
IncreaseBuild(); | |
IncreasePlatformsVersion(); | |
} | |
[MenuItem("Build/Increase Major Version")] | |
static void IncreaseMajor() | |
{ | |
IncrementVersion(new[] { 1, 0, 0 }); | |
} | |
[MenuItem("Build/Increase Minor Version")] | |
static void IncreaseMinor() | |
{ | |
IncrementVersion(new[] { 0, 1, 0 }); | |
} | |
[MenuItem("Build/Increase Build Version")] | |
static void IncreaseBuild() | |
{ | |
IncrementVersion(new[] { 0, 0, 1 }); | |
} | |
[MenuItem("Build/Increase Platforms Version (Android and iOS)")] | |
static void IncreasePlatformsVersion() | |
{ | |
PlayerSettings.Android.bundleVersionCode += 1; | |
PlayerSettings.iOS.buildNumber = (int.Parse(PlayerSettings.iOS.buildNumber) + 1).ToString(); | |
Debug.Log($"New Android bundle version code: {PlayerSettings.Android.bundleVersionCode}"); | |
Debug.Log($"New iOS build number: {PlayerSettings.iOS.buildNumber}"); | |
} | |
static void IncrementVersion(int[] version) | |
{ | |
string[] lines = PlayerSettings.bundleVersion.Split('.'); | |
for (int i = lines.Length - 1; i >= 0; i--) | |
{ | |
bool isNumber = int.TryParse(lines[i], out int numberValue); | |
if (isNumber && version.Length - 1 >= i) | |
{ | |
if (i > 0 && version[i] + numberValue > 9) | |
{ | |
version[i - 1]++; | |
version[i] = 0; | |
} | |
else | |
{ | |
version[i] += numberValue; | |
} | |
} | |
} | |
PlayerSettings.bundleVersion = $"{version[0]}.{version[1]}.{version[2]}"; | |
Debug.Log($"New bundle version: {version[0]}.{version[1]}.{version[2]}"); | |
} | |
public void OnPreprocessBuild(BuildReport report) | |
{ | |
bool shouldIncrement = EditorUtility.DisplayDialog( | |
title: "Increment Build and Platforms Version?", | |
message: $@" | |
Current version: {PlayerSettings.bundleVersion} | |
Android bundle version: {PlayerSettings.Android.bundleVersionCode} | |
iOS build number: {PlayerSettings.iOS.buildNumber}", | |
ok: "Yes", | |
cancel: "No" | |
); | |
if (shouldIncrement) IncreaseBuildAndPlatformsVersion(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment