优化版本更新检测

This commit is contained in:
monitor1394
2020-05-24 08:06:40 +08:00
parent 51f3558b55
commit 463305a63e
6 changed files with 164 additions and 50 deletions

View File

@@ -1,6 +1,7 @@
# 更新日志 # 更新日志
* (2020.05.24) 优化版本更新检测
* (2020.05.22) 发布`v1.5.0`版本 * (2020.05.22) 发布`v1.5.0`版本
* (2020.05.21) 增加`圆角柱图`支持渐变 * (2020.05.21) 增加`圆角柱图`支持渐变
* (2020.05.21) 增加`Background`背景组件 * (2020.05.21) 增加`Background`背景组件

View File

@@ -112,15 +112,19 @@ namespace XCharts
private void CheckWarning() private void CheckWarning()
{ {
if (GUILayout.Button("Check Update "))
{
CheckVersionEditor.ShowWindow();
}
if (m_CheckWarning) if (m_CheckWarning)
{ {
EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginHorizontal();
if (GUILayout.Button("Check warning")) if (GUILayout.Button("Check Warning"))
{ {
m_CheckWarning = true; m_CheckWarning = true;
m_Target.CheckWarning(); m_Target.CheckWarning();
} }
if (GUILayout.Button("Hide warning")) if (GUILayout.Button("Hide Warning"))
{ {
m_CheckWarning = false; m_CheckWarning = false;
} }

View File

@@ -16,7 +16,7 @@ namespace XCharts
private static CheckVersionEditor window; private static CheckVersionEditor window;
[MenuItem("Component/XCharts/Check For Update")] [MenuItem("Component/XCharts/Check For Update")]
private static void ShowWindow() public static void ShowWindow()
{ {
window = GetWindow<CheckVersionEditor>(); window = GetWindow<CheckVersionEditor>();
window.titleContent = new GUIContent("XCharts Check For Update"); window.titleContent = new GUIContent("XCharts Check For Update");
@@ -25,6 +25,11 @@ namespace XCharts
XChartsMgr.Instance.CheckVersion(); XChartsMgr.Instance.CheckVersion();
} }
void OnInspectorUpdate()
{
Repaint();
}
private void OnGUI() private void OnGUI()
{ {
var mgr = XChartsMgr.Instance; var mgr = XChartsMgr.Instance;
@@ -32,28 +37,39 @@ namespace XCharts
GUILayout.Label("当前版本:" + mgr.nowVersion); GUILayout.Label("当前版本:" + mgr.nowVersion);
if (mgr.needUpdate && !mgr.isCheck) if (mgr.needUpdate && !mgr.isCheck)
{ {
GUILayout.BeginHorizontal();
GUILayout.Label("最新版本:" + mgr.newVersion); GUILayout.Label("最新版本:" + mgr.newVersion);
GUILayout.Label("");
if (mgr.isCheck) GUILayout.Label("检测中..."); if (mgr.isCheck) GUILayout.Label("检测中...");
else if (mgr.isNetworkError) GUILayout.Label("检测失败:" + mgr.networkError); else if (mgr.isNetworkError) GUILayout.Label("检测失败:" + mgr.networkError);
else GUILayout.Label("有更新!"); else
if (GUILayout.Button("去Github主页"))
{ {
Application.OpenURL("https://github.com/monitor1394/unity-ugui-XCharts"); GUILayout.Label("有更新!");
} }
GUILayout.EndHorizontal();
GUILayout.Label(""); GUILayout.Label("");
if (!string.IsNullOrEmpty(mgr.desc)) if (!string.IsNullOrEmpty(mgr.desc))
{ {
GUILayout.Label(mgr.desc); GUILayout.Label(mgr.desc);
GUILayout.Label("");
} }
if (GUILayout.Button("去Github主页"))
{
Application.OpenURL("https://github.com/monitor1394/unity-ugui-XCharts");
}
if (GUILayout.Button("点Star支持"))
{
Application.OpenURL("https://github.com/monitor1394/unity-ugui-XCharts/stargazers");
}
if (GUILayout.Button("问题反馈"))
{
Application.OpenURL("https://github.com/monitor1394/unity-ugui-XCharts/issues");
}
if (!string.IsNullOrEmpty(mgr.changeLog))
{
scrollPos = GUILayout.BeginScrollView(scrollPos); scrollPos = GUILayout.BeginScrollView(scrollPos);
GUILayout.TextArea(mgr.changeLog); GUILayout.TextArea(mgr.changeLog);
GUILayout.EndScrollView(); GUILayout.EndScrollView();
} }
}
else else
{ {
if (mgr.isCheck) GUILayout.Label("最新版本:检测中..."); if (mgr.isCheck) GUILayout.Label("最新版本:检测中...");
@@ -69,11 +85,18 @@ namespace XCharts
if (!string.IsNullOrEmpty(mgr.desc)) if (!string.IsNullOrEmpty(mgr.desc))
{ {
GUILayout.Label(mgr.desc); GUILayout.Label(mgr.desc);
GUILayout.Label("");
} }
if (GUILayout.Button("去Github主页")) if (GUILayout.Button("去Github主页"))
{ {
Application.OpenURL(mgr.homepage); Application.OpenURL("https://github.com/monitor1394/unity-ugui-XCharts");
}
if (GUILayout.Button("点Star支持"))
{
Application.OpenURL("https://github.com/monitor1394/unity-ugui-XCharts/stargazers");
}
if (GUILayout.Button("问题反馈"))
{
Application.OpenURL("https://github.com/monitor1394/unity-ugui-XCharts/issues");
} }
if (mgr.isNetworkError && GUILayout.Button("重新检测")) if (mgr.isNetworkError && GUILayout.Button("重新检测"))
{ {

View File

@@ -0,0 +1,62 @@
/******************************************/
/* */
/* Copyright (c) 2018 monitor1394 */
/* https://github.com/monitor1394 */
/* */
/******************************************/
using UnityEditor;
using UnityEngine;
namespace XCharts
{
/// <summary>
/// Editor class used to edit UI XChartsMgr.
/// </summary>
[CustomEditor(typeof(XChartsMgr), false)]
public class XChartsMgrEditor : Editor
{
protected XChartsMgr m_Target;
protected SerializedProperty m_Script;
protected SerializedProperty m_NowVersion;
protected SerializedProperty m_NewVersion;
protected virtual void OnEnable()
{
m_Target = (XChartsMgr)target;
m_Script = serializedObject.FindProperty("m_Script");
m_NowVersion = serializedObject.FindProperty("m_NowVersion");
m_NewVersion = serializedObject.FindProperty("m_NewVersion");
}
public override void OnInspectorGUI()
{
if (m_Target == null && target == null)
{
base.OnInspectorGUI();
return;
}
serializedObject.Update();
EditorGUILayout.PropertyField(m_NowVersion);
EditorGUILayout.PropertyField(m_NewVersion);
if (GUILayout.Button("检测更新"))
{
CheckVersionEditor.ShowWindow();
}
if (GUILayout.Button("去Github主页"))
{
Application.OpenURL("https://github.com/monitor1394/unity-ugui-XCharts");
}
if (GUILayout.Button("点Star支持"))
{
Application.OpenURL("https://github.com/monitor1394/unity-ugui-XCharts/stargazers");
}
if (GUILayout.Button("问题反馈"))
{
Application.OpenURL("https://github.com/monitor1394/unity-ugui-XCharts/issues");
}
serializedObject.ApplyModifiedProperties();
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 69cbbe551cf1f45c984e6b4febc9f697
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -30,8 +30,8 @@ namespace XCharts
[ExecuteInEditMode] [ExecuteInEditMode]
public class XChartsMgr : MonoBehaviour public class XChartsMgr : MonoBehaviour
{ {
public const string version = "1.4.0"; public const string version = "1.5.0";
public const int date = 20200411; public const int date = 20200522;
[SerializeField] private string m_NowVersion; [SerializeField] private string m_NowVersion;
[SerializeField] private string m_NewVersion; [SerializeField] private string m_NewVersion;
@@ -92,27 +92,49 @@ namespace XCharts
{ {
get get
{ {
return date < newCheckDate; return !isNetworkError && !m_NowVersion.Equals(m_NewVersion);
} }
} }
public void CheckVersion() public void CheckVersion()
{ {
isCheck = true;
isNetworkError = false;
networkError = "";
StartCoroutine(GetVersion()); StartCoroutine(GetVersion());
if (date < newCheckDate)
{
StartCoroutine(GetChangeLog());
}
} }
IEnumerator GetVersion() IEnumerator GetVersion()
{ {
var url = "https://raw.githubusercontent.com/monitor1394/unity-ugui-XCharts/master/Assets/XCharts/version.json"; isCheck = true;
isNetworkError = false;
networkError = "";
var url = "https://raw.githubusercontent.com/monitor1394/unity-ugui-XCharts/master/Assets/XCharts/package.json";
var web = UnityWebRequest.Get(url); var web = UnityWebRequest.Get(url);
yield return web; yield return web.SendWebRequest();
CheckVersionWebRequest(web);
if (isNetworkError)
{
url = "https://gitee.com/monitor1394/unity-ugui-XCharts/raw/master/Assets/XCharts/package.json";
web = UnityWebRequest.Get(url);
yield return web.SendWebRequest();
CheckVersionWebRequest(web);
}
if (needUpdate)
{
url = "https://raw.githubusercontent.com/monitor1394/unity-ugui-XCharts/master/Assets/XCharts/CHANGELOG.md";
web = UnityWebRequest.Get(url);
yield return web.SendWebRequest();
if (!CheckLogWebRequest(web))
{
url = "https://gitee.com/monitor1394/unity-ugui-XCharts/raw/master/Assets/XCharts/CHANGELOG.md";
web = UnityWebRequest.Get(url);
yield return web.SendWebRequest();
CheckLogWebRequest(web);
}
}
isCheck = false;
}
private void CheckVersionWebRequest(UnityWebRequest web)
{
if (IsNetworkError(web)) if (IsNetworkError(web))
{ {
isNetworkError = true; isNetworkError = true;
@@ -121,49 +143,40 @@ namespace XCharts
} }
else if (web.responseCode == 200) else if (web.responseCode == 200)
{ {
isNetworkError = false;
var cv = JsonUtility.FromJson<XChartsVersion>(web.downloadHandler.text); var cv = JsonUtility.FromJson<XChartsVersion>(web.downloadHandler.text);
m_NewVersion = cv.version + " (" + cv.date + ")"; m_NewVersion = cv.version + "_" + cv.date;
newDate = cv.date; newDate = cv.date;
newCheckDate = cv.checkdate; newCheckDate = cv.checkdate;
desc = cv.desc; desc = cv.desc;
homepage = cv.homepage; homepage = cv.homepage;
web.Dispose();
isCheck = false;
} }
else else
{ {
isCheck = false;
isNetworkError = true; isNetworkError = true;
if (web.responseCode > 0) if (web.responseCode > 0)
networkError = web.responseCode.ToString(); networkError = web.responseCode.ToString();
else if (!string.IsNullOrEmpty(web.error)) if (!string.IsNullOrEmpty(web.error))
networkError = web.error; networkError += "," + web.error;
else if (string.IsNullOrEmpty(networkError))
{
networkError = "-"; networkError = "-";
}
m_NewVersion = "-"; m_NewVersion = "-";
} }
web.Dispose();
} }
IEnumerator GetChangeLog() private bool CheckLogWebRequest(UnityWebRequest web)
{ {
isCheck = true; bool success = false;
var url = "https://raw.githubusercontent.com/monitor1394/unity-ugui-XCharts/master/Assets/XCharts/CHANGELOG.md"; if (web.responseCode == 200)
var web = new UnityWebRequest(url);
yield return web;
if (IsNetworkError(web))
{
Debug.LogError(web.error);
}
else if (web.responseCode == 200)
{ {
CheckLog(web.downloadHandler.text); CheckLog(web.downloadHandler.text);
success = true;
}
web.Dispose(); web.Dispose();
isCheck = false; return success;
}
else
{
isCheck = false;
}
} }
private void CheckLog(string text) private void CheckLog(string text)