using System; using UnityEditor; using UnityEditor.Build; using UnityEditor.Build.Reporting; using UnityEngine; public class VersionIncrementer : IPreprocessBuildWithReport { public int callbackOrder => 0; public void OnPreprocessBuild(BuildReport report) { // 去除时间戳 string[] bundleVersionParts = PlayerSettings.bundleVersion.Split('-'); string version = bundleVersionParts[0]; // 获取当前版本号 string[] versionParts = version.Split('.'); int major = int.Parse(versionParts[0]); int minor = int.Parse(versionParts[1]); int revision = int.Parse(versionParts[2]); int build = int.Parse(versionParts[3]); // 更新版本号 string incrementedVersion = $"{major}.{minor}.{revision}.{build + 1}"; bool isDevelopmentBuild = (report.summary.options & BuildOptions.Development) != 0; if (isDevelopmentBuild) { string timestamp = DateTime.Now.ToString("yyyyMMdd-HHmmss"); incrementedVersion = $"{incrementedVersion}-{timestamp}-DEV"; } PlayerSettings.bundleVersion = incrementedVersion; Debug.Log($"[VersionIncrementer] bundleVersion: {incrementedVersion}"); if (report.summary.platform == BuildTarget.Android) { int versionCode = PlayerSettings.Android.bundleVersionCode; PlayerSettings.Android.bundleVersionCode = versionCode + 1; Debug.Log($"[VersionIncrementer] Android versionCode: {versionCode} -> {versionCode + 1}"); } } }