using System.Collections.Generic; using UnityEditor; using UnityEngine; namespace ET.PackageManager.Editor { /// /// ET包管理 更新检测窗口 /// public class ETPackageUpdateWindow : EditorWindow { #if !ODIN_INSPECTOR [MenuItem("ET/ETPackage 更新检查")] #endif private static void OpenWindow() { var window = GetWindow(); if (window != null) window.Show(); } //[MenuItem("ET/关闭ETPackage 更新检查")] //错误时使用的 面板出现了错误 会导致如何都打不开 就需要先关闭 public static void CloseWindow() { GetWindow()?.Close(); } private string m_UpdatePackageInfo; private GUIStyle m_CustomStyle; private void OnEnable() { m_CustomStyle = new(EditorStyles.wordWrappedMiniLabel) { fontSize = 30, richText = true }; m_UpdatePackageInfo = "更新信息请求中..."; PackageHelper.CheckUpdateAll(CheckUpdateAll); } private void CheckUpdateAll(bool result) { if (!result) { m_UpdatePackageInfo = "更新失败..."; return; } ShowUpdateInfo(); } private void ShowUpdateInfo() { var sb = SbPool.Get(); sb.Append("可更新包信息:"); sb.AppendLine(); sb.AppendLine(); var currentETPackageInfo = new Dictionary(); foreach (var packageInfo in UnityEditor.PackageManager.PackageInfo.GetAllRegisteredPackages()) { var name = packageInfo.name; if (name.Contains("cn.etetet.")) { var version = packageInfo.version; currentETPackageInfo[name] = version; } } var newETPackageInfo = new Dictionary(); foreach (var info in currentETPackageInfo) { var name = info.Key; var newVersion = PackageHelper.GetPackageLastVersion(name); if (string.IsNullOrEmpty(newVersion)) { continue; } var version = info.Value; if (version != newVersion) { newETPackageInfo[name] = newVersion; } } if (newETPackageInfo.Count <= 0) { sb.Append($"无"); } else { foreach (var info in newETPackageInfo) { var name = info.Key; var newVersion = info.Value; var version = currentETPackageInfo[name]; sb.Append($"[{name} {version}] >> [{newVersion}]"); sb.AppendLine(); } } m_UpdatePackageInfo = SbPool.PutAndToStr(sb); } private void OnGUI() { EditorGUILayout.LabelField("提示:安装Odin 可使用更详细丰富的管理界面"); GUILayout.Space(10); if (GUILayout.Button("ETPackageManager 包管理文档")) { Application.OpenURL("https://lib9kmxvq7k.feishu.cn/wiki/DzqwwwBJvixRvtkCI4dcatGcnAd"); } GUILayout.Space(10); EditorGUILayout.LabelField(m_UpdatePackageInfo, m_CustomStyle); } } }