UIFontSizeAdapterEditor.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #if UNITY_EDITOR
  2. using UnityEditor;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. namespace AdaptUI
  6. {
  7. [CustomEditor(typeof(UIFontSizeAdapter))]
  8. public class UIFontSizeAdapterEditor : Editor
  9. {
  10. public override void OnInspectorGUI()
  11. {
  12. var script = (UIFontSizeAdapter)target;
  13. var text = script.GetComponent<Text>();
  14. EditorGUILayout.LabelField("字体适配器", EditorStyles.boldLabel);
  15. DrawFontEditor(script, "默认字体大小", ref script.defaultFontSize, text, false);
  16. DrawFontEditor(script, "iPhone 字体大小", ref script.iPhoneFontSize, text, true);
  17. DrawFontEditor(script, "iPad 字体大小", ref script.iPadFontSize, text, true);
  18. EditorGUILayout.Space();
  19. if (GUILayout.Button("自动字体适配"))
  20. {
  21. script.ApplyFontSize();
  22. }
  23. }
  24. private void DrawFontEditor(UIFontSizeAdapter script, string title, ref FontSizeData data, Text text, bool allowGet)
  25. {
  26. EditorGUILayout.LabelField(title, EditorStyles.boldLabel);
  27. EditorGUI.indentLevel++;
  28. data.fontSize = EditorGUILayout.IntField("字体大小", data.fontSize);
  29. if (GUILayout.Button("应用到 Text 组件"))
  30. {
  31. text.fontSize = data.fontSize;
  32. Undo.RecordObject(script, "Apply Font Size");
  33. EditorUtility.SetDirty(script);
  34. }
  35. if (allowGet && GUILayout.Button("获取当前字体大小"))
  36. {
  37. data.fontSize = text.fontSize;
  38. Undo.RecordObject(script, "Get Current Font Size");
  39. EditorUtility.SetDirty(script);
  40. }
  41. EditorGUI.indentLevel--;
  42. EditorGUILayout.Space();
  43. }
  44. }
  45. }
  46. #endif