ETPackageUpdateWindow.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. using System.Collections.Generic;
  2. using UnityEditor;
  3. using UnityEngine;
  4. namespace ET.PackageManager.Editor
  5. {
  6. /// <summary>
  7. /// ET包管理 更新检测窗口
  8. /// </summary>
  9. public class ETPackageUpdateWindow : EditorWindow
  10. {
  11. #if !ODIN_INSPECTOR
  12. [MenuItem("ET/ETPackage 更新检查")]
  13. #endif
  14. private static void OpenWindow()
  15. {
  16. var window = GetWindow<ETPackageUpdateWindow>();
  17. if (window != null)
  18. window.Show();
  19. }
  20. //[MenuItem("ET/关闭ETPackage 更新检查")]
  21. //错误时使用的 面板出现了错误 会导致如何都打不开 就需要先关闭
  22. public static void CloseWindow()
  23. {
  24. GetWindow<ETPackageUpdateWindow>()?.Close();
  25. }
  26. private string m_UpdatePackageInfo;
  27. private GUIStyle m_CustomStyle;
  28. private void OnEnable()
  29. {
  30. m_CustomStyle = new(EditorStyles.wordWrappedMiniLabel) { fontSize = 30, richText = true };
  31. m_UpdatePackageInfo = "更新信息请求中...";
  32. PackageHelper.CheckUpdateAll(CheckUpdateAll);
  33. }
  34. private void CheckUpdateAll(bool result)
  35. {
  36. if (!result)
  37. {
  38. m_UpdatePackageInfo = "更新失败...";
  39. return;
  40. }
  41. ShowUpdateInfo();
  42. }
  43. private void ShowUpdateInfo()
  44. {
  45. var sb = SbPool.Get();
  46. sb.Append("可更新包信息:");
  47. sb.AppendLine();
  48. sb.AppendLine();
  49. var currentETPackageInfo = new Dictionary<string, string>();
  50. foreach (var packageInfo in UnityEditor.PackageManager.PackageInfo.GetAllRegisteredPackages())
  51. {
  52. var name = packageInfo.name;
  53. if (name.Contains("cn.etetet."))
  54. {
  55. var version = packageInfo.version;
  56. currentETPackageInfo[name] = version;
  57. }
  58. }
  59. var newETPackageInfo = new Dictionary<string, string>();
  60. foreach (var info in currentETPackageInfo)
  61. {
  62. var name = info.Key;
  63. var newVersion = PackageHelper.GetPackageLastVersion(name);
  64. if (string.IsNullOrEmpty(newVersion))
  65. {
  66. continue;
  67. }
  68. var version = info.Value;
  69. if (version != newVersion)
  70. {
  71. newETPackageInfo[name] = newVersion;
  72. }
  73. }
  74. if (newETPackageInfo.Count <= 0)
  75. {
  76. sb.Append($"无");
  77. }
  78. else
  79. {
  80. foreach (var info in newETPackageInfo)
  81. {
  82. var name = info.Key;
  83. var newVersion = info.Value;
  84. var version = currentETPackageInfo[name];
  85. sb.Append($"[{name} {version}] >> [<color=#00FF00>{newVersion}</color>]");
  86. sb.AppendLine();
  87. }
  88. }
  89. m_UpdatePackageInfo = SbPool.PutAndToStr(sb);
  90. }
  91. private void OnGUI()
  92. {
  93. EditorGUILayout.LabelField("提示:安装Odin 可使用更详细丰富的管理界面");
  94. GUILayout.Space(10);
  95. if (GUILayout.Button("ETPackageManager 包管理文档"))
  96. {
  97. Application.OpenURL("https://lib9kmxvq7k.feishu.cn/wiki/DzqwwwBJvixRvtkCI4dcatGcnAd");
  98. }
  99. GUILayout.Space(10);
  100. EditorGUILayout.LabelField(m_UpdatePackageInfo, m_CustomStyle);
  101. }
  102. }
  103. }