using UnityEditor; using UnityEditor.Build; using UnityEditor.Build.Reporting; using UnityEngine; namespace Ferdi{ public class BuildVersionManager : IPreprocessBuildWithReport{ public int callbackOrder => 0; public void OnPreprocessBuild(BuildReport Report){ string BuildNumber = "0"; // Increment the Build number switch(Report.summary.platform){ case BuildTarget.StandaloneOSX: BuildNumber = PlayerSettings.macOS.buildNumber = (int.Parse(PlayerSettings.macOS.buildNumber)+1).ToString(); break; case BuildTarget.iOS: BuildNumber = PlayerSettings.iOS.buildNumber = (int.Parse(PlayerSettings.iOS.buildNumber)+1).ToString(); break; case BuildTarget.Android: PlayerSettings.Android.bundleVersionCode++; BuildNumber = PlayerSettings.Android.bundleVersionCode.ToString(); break; } // Increment the Build version if(PlayerSettings.bundleVersion == "0.1"){ PlayerSettings.bundleVersion = "0.1.0"; } int BundleVersionDate = 0; int MainBundleVersion = 0; if( PlayerPrefs.HasKey("BundleVersionDate") ){ BundleVersionDate = PlayerPrefs.GetInt("BundleVersionDate"); } if( PlayerPrefs.HasKey("MainBundleVersion") ){ MainBundleVersion = PlayerPrefs.GetInt("MainBundleVersion"); } string[] VersionParts = PlayerSettings.bundleVersion.Split('.'); if(VersionParts.Length == 3){ if( int.Parse(System.DateTime.Now.ToString("yyyyMMdd")) > BundleVersionDate ){ VersionParts[1] = ( int.Parse(VersionParts[1])+1).ToString(); PlayerPrefs.SetInt("BundleVersionDate", int.Parse(System.DateTime.Now.ToString("yyyyMMdd"))); } if(MainBundleVersion > int.Parse(VersionParts[0])){ VersionParts[1] = "1"; } PlayerSettings.bundleVersion = VersionParts[0] + "." + VersionParts[1] + "." + BuildNumber; PlayerPrefs.SetInt("MainBundleVersion", int.Parse(VersionParts[0])); Debug.Log( "The build version was updated successfully." ); }else{ Debug.LogError( "The build version couldn't be updated because the current build version is not made of 3 parts. There must only be two dots . in the build version." ); } } } }