using UnityEngine; using System; using System.Linq; using System.IO; public class VersionTool : IComparable { public const string Build_Ver_File_Name = "buildver.txt"; public static string PackVer { get { string[] splitVersion = Application.version.Split('.'); return $"{splitVersion[0]}_{splitVersion[1]}"; } } public int Major { get; private set; } public int Minor { get; private set; } public string Build { get; private set; } private VersionTool(int major, int minor, string build) { Major = major; Minor = minor; Build = build; } public static VersionTool FromString(string version) { string[] splitVersion = version.Split('.'); return new VersionTool(int.Parse(splitVersion[0]), int.Parse(splitVersion[1]), splitVersion[2]); } public static VersionTool FromLocal() { string appVerStr = Application.version; string [] splitVersion = appVerStr.Split('.'); return new VersionTool(int.Parse(splitVersion[0]), int.Parse(splitVersion[1]), GetLoacalBuild()); } private static string GetLoacalBuild() { var persisterBVerFile = $"{Application.persistentDataPath}/{Build_Ver_File_Name}"; if(File.Exists(persisterBVerFile)) { return File.ReadAllText(persisterBVerFile); } if (BetterStreamingAssets.FileExists(Build_Ver_File_Name)) return BetterStreamingAssets.ReadAllText(Build_Ver_File_Name); return "None"; } public int CompareTo(VersionTool other) { int result = Major.CompareTo(other.Major); if (result == 0) { result = Minor.CompareTo(other.Minor); } return result; } public static bool operator >(VersionTool a, VersionTool b) { return a.CompareTo(b) > 0; } public static bool operator <(VersionTool a, VersionTool b) { return a.CompareTo(b) < 0; } public static bool operator ==(VersionTool a, VersionTool b) { return a.CompareTo(b) == 0; } public static bool operator !=(VersionTool a, VersionTool b) { return a.CompareTo(b) !=0 ; } public override string ToString() { return $"Ver {Major}_{Minor}_{Build}"; } public string ToVerString() { Debug.Log($"{Major}.{Minor}.{Build}"); return $"{Major}.{Minor}.{Build}"; } public void Save() { var persisterBVerFile = $"{Application.persistentDataPath}/{Build_Ver_File_Name}"; File.Delete(persisterBVerFile); File.WriteAllText(persisterBVerFile, Build); } }