AddressableImageLoaderWindow.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using UnityEngine;
  2. using UnityEditor;
  3. using System.Collections.Generic;
  4. namespace AdaptUI
  5. {
  6. public class AddressableImageLoaderWindow : EditorWindow
  7. {
  8. private List<AddressableImageLoader> loaders = new List<AddressableImageLoader>();
  9. [MenuItem("Window/My Addressable UI Manager")]
  10. public static void ShowWindow()
  11. {
  12. GetWindow<AddressableImageLoaderWindow>("Addressable UI Manager");
  13. }
  14. private void OnGUI()
  15. {
  16. EditorGUILayout.LabelField("Addressable UI 管理器", EditorStyles.boldLabel);
  17. if (GUILayout.Button("🔄 查找所有 AddressableImageLoader"))
  18. {
  19. FindAllLoaders();
  20. }
  21. if (loaders.Count > 0)
  22. {
  23. EditorGUILayout.Space();
  24. EditorGUILayout.LabelField($"发现 {loaders.Count} 个 AddressableImageLoader", EditorStyles.boldLabel);
  25. if (GUILayout.Button("🔄 刷新全部 UI 资源"))
  26. {
  27. RefreshAllLoaders();
  28. }
  29. EditorGUILayout.Space();
  30. foreach (var loader in loaders)
  31. {
  32. EditorGUILayout.BeginHorizontal();
  33. EditorGUILayout.ObjectField(loader.gameObject, typeof(GameObject), true);
  34. if (GUILayout.Button("刷新", GUILayout.Width(60)))
  35. {
  36. RefreshLoader(loader);
  37. }
  38. EditorGUILayout.EndHorizontal();
  39. }
  40. }
  41. else
  42. {
  43. EditorGUILayout.HelpBox("没有找到 AddressableImageLoader 组件,请点击查找按钮。", MessageType.Info);
  44. }
  45. }
  46. private void FindAllLoaders()
  47. {
  48. loaders.Clear();
  49. AddressableImageLoader[] allLoaders = FindObjectsOfType<AddressableImageLoader>();
  50. loaders.AddRange(allLoaders);
  51. //Debug.Log($"发现 {loaders.Count} 个 AddressableImageLoader 组件");
  52. }
  53. private void RefreshAllLoaders()
  54. {
  55. foreach (var loader in loaders)
  56. {
  57. RefreshLoader(loader);
  58. }
  59. }
  60. private void RefreshLoader(AddressableImageLoader loader)
  61. {
  62. if (loader != null)
  63. {
  64. AddressableImageLoaderEditor.LoadImageInEditor(loader);
  65. //Debug.Log($"已刷新 {loader.gameObject.name}");
  66. }
  67. }
  68. }
  69. }