private static void OnEditorUpdate() { if (EditorApplication.isPlaying) { EditorApplication.update -= OnEditorUpdate; return; } if (!IsForceOpen && IsDisableAutoCheck) { EditorApplication.update -= OnEditorUpdate; return; } RemoteVersion = LocalVersion; IsUpdateAvailable = false; if (RemoteRequest == null) { RemoteRequest = UnityWebRequest.Get(RemoteVersionJsonPath); RemoteRequest.SendWebRequest(); } if (!RemoteRequest.isDone) { return; } if (!RemoteRequest.isNetworkError) { var versionObj = RemoteRequest.downloadHandler.text.JsonDeserialize <RemoteVersionInfo>(); if (versionObj != null) { if (!string.IsNullOrWhiteSpace(versionObj.version)) { RemoteVersion = versionObj.version; } } } if (Version.TryParse(LocalVersion, out Version localVersion)) { if (Version.TryParse(RemoteVersion, out Version remoteVersion)) { IsUpdateAvailable = localVersion.CompareTo(remoteVersion) < 0; } } if (IsUpdateAvailable || IsForceOpen) { GetWindow <SdkUpdateWindow>("SDK Update", true); } EditorApplication.update -= OnEditorUpdate; }
/// <summary> /// Returns whether or not the provided version is valid. /// Note: We first format the version by appending ".0" at most twice to ensure it has at least a patch version. /// </summary> /// <param name="version">The version to check.</param> /// <returns>True if the provided version is valid, false otherwise.</returns> public static bool IsValidVersion(string version) { var versionPair = FormatVersion(version); return(Version.TryParse(versionPair.FormattedVersion, out _)); }