Skip to content

Instantly share code, notes, and snippets.

@Sov3rain
Last active November 27, 2020 16:35
Show Gist options
  • Save Sov3rain/4cd89e69809693fcca1079a87d3c9009 to your computer and use it in GitHub Desktop.
Save Sov3rain/4cd89e69809693fcca1079a87d3c9009 to your computer and use it in GitHub Desktop.
A simple Editor Script to increment versions in Unity
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