// using System; // using System.Collections; // using System.Collections.Generic; // using System.IO; // using System.Linq; // using System.Reflection; // using UnityEditor; // using UnityEngine; // // namespace TyphoonUI // { // /// // /// 视图类引用关系 // /// // public class ViewClassReference // { // public Type ViewType; // public HashSet ReferenceClass = new HashSet(); // } // // // public class ViewClassReferenceWindow : EditorWindow // { // public static List References; // // private Vector2 _scroll; // // [MenuItem("TyphoonUI/代码导出/查看View类引用关系")] // public static void Open() // { // References = LoadViewReference(); // var win = GetWindow(); // win.titleContent = new GUIContent("View引用关系"); // win.minSize = new Vector2(600, 400); // win.Show(); // } // // // private static List LoadViewReference() // { // var data = new Dictionary(); // var all = new HashSet(); // var assemblies = AppDomain.CurrentDomain.GetAssemblies(); // Type interfaceType = typeof(IInitializeView); // foreach (var assembly in assemblies) // { // var types = assembly.GetTypes(); // foreach (var type in types) // { // all.Add(type); // var isView = type.GetInterface(interfaceType.FullName) != null; // if (isView) // { // data.Add(type, new ViewClassReference() // { // ViewType = type, // }); // } // } // } // // foreach (var element in all) // { // var fields = element.GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); // foreach (var field in fields) // { // if (data.ContainsKey(field.FieldType)) // { // data[field.FieldType].ReferenceClass.Add(element); // } // } // } // // return data.Values.ToList(); // } // // // private void OnGUI() // { // if (References == null) // { // Close(); // } // // if (References != null) // { // GUILayout.BeginHorizontal(); // GUIDrawer.DrawTitleLabel("序号", GUILayout.Width(44)); // GUILayout.Space(1); // GUIDrawer.DrawTitleLabel("View Script"); // GUILayout.Space(1); // GUIDrawer.DrawTitleLabel("引用计数", GUILayout.Width(100)); // GUILayout.Space(1); // GUIDrawer.DrawTitleLabel("", GUILayout.Width(60)); // GUILayout.Space(13); // GUILayout.EndHorizontal(); // GUILayout.Space(1); // _scroll = GUILayout.BeginScrollView(_scroll, false, true); // var index = 0; // foreach (var element in References) // { // index += 1; // GUILayout.BeginHorizontal(); // GUIDrawer.DrawTitleLabel(index.ToString(), GUILayout.Width(44)); // GUILayout.Space(1); // GUIDrawer.DrawTitleLabel(element.ViewType.Name); // GUILayout.Space(1); // GUIDrawer.DrawTitleLabel(element.ReferenceClass.Count.ToString(), GUILayout.Width(100)); // GUILayout.Space(1); // if (GUILayout.Button("删除", Styles.R2Button, GUILayout.Width(60))) // { // var scriptPath = $"{Paths.ExportCodeFolder}/{element.ViewType.FullName.Replace(".", "/")}.cs"; // if (!File.Exists(scriptPath)) // { // Debug.Log($"找不到:{scriptPath}"); // } // } // // GUILayout.EndHorizontal(); // } // // GUILayout.EndScrollView(); // } // } // } // }