using UnityEngine; using UnityEditor; using System.Collections.Generic; namespace AdaptUI { public class AddressableImageLoaderWindow : EditorWindow { private List loaders = new List(); [MenuItem("Window/My Addressable UI Manager")] public static void ShowWindow() { GetWindow("Addressable UI Manager"); } private void OnGUI() { EditorGUILayout.LabelField("Addressable UI 管理器", EditorStyles.boldLabel); if (GUILayout.Button("🔄 查找所有 AddressableImageLoader")) { FindAllLoaders(); } if (loaders.Count > 0) { EditorGUILayout.Space(); EditorGUILayout.LabelField($"发现 {loaders.Count} 个 AddressableImageLoader", EditorStyles.boldLabel); if (GUILayout.Button("🔄 刷新全部 UI 资源")) { RefreshAllLoaders(); } EditorGUILayout.Space(); foreach (var loader in loaders) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.ObjectField(loader.gameObject, typeof(GameObject), true); if (GUILayout.Button("刷新", GUILayout.Width(60))) { RefreshLoader(loader); } EditorGUILayout.EndHorizontal(); } } else { EditorGUILayout.HelpBox("没有找到 AddressableImageLoader 组件,请点击查找按钮。", MessageType.Info); } } private void FindAllLoaders() { loaders.Clear(); AddressableImageLoader[] allLoaders = FindObjectsOfType(); loaders.AddRange(allLoaders); //Debug.Log($"发现 {loaders.Count} 个 AddressableImageLoader 组件"); } private void RefreshAllLoaders() { foreach (var loader in loaders) { RefreshLoader(loader); } } private void RefreshLoader(AddressableImageLoader loader) { if (loader != null) { AddressableImageLoaderEditor.LoadImageInEditor(loader); //Debug.Log($"已刷新 {loader.gameObject.name}"); } } } }