UIElementsTools.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #if UNITY_2019_4_OR_NEWER
  2. using UnityEditor;
  3. using UnityEngine;
  4. using UnityEditor.UIElements;
  5. using UnityEngine.UIElements;
  6. namespace YooAsset.Editor
  7. {
  8. public static class UIElementsTools
  9. {
  10. /// <summary>
  11. /// 设置元素显隐
  12. /// </summary>
  13. public static void SetElementVisible(VisualElement element, bool visible)
  14. {
  15. if (element == null)
  16. return;
  17. element.style.display = visible ? DisplayStyle.Flex : DisplayStyle.None;
  18. element.style.visibility = visible ? Visibility.Visible : Visibility.Hidden;
  19. }
  20. /// <summary>
  21. /// 设置元素的文本最小宽度
  22. /// </summary>
  23. public static void SetElementLabelMinWidth(VisualElement element, int minWidth)
  24. {
  25. var label = element.Q<Label>();
  26. if (label != null)
  27. {
  28. // 设置最小宽度
  29. label.style.minWidth = minWidth;
  30. }
  31. }
  32. /// <summary>
  33. /// 设置按钮图标
  34. /// </summary>
  35. public static void SetToolbarButtonIcon(ToolbarButton element, string iconName)
  36. {
  37. var image = EditorGUIUtility.IconContent(iconName).image as Texture2D;
  38. element.style.backgroundImage = image;
  39. element.text = string.Empty;
  40. }
  41. /// <summary>
  42. /// 竖版分屏
  43. /// </summary>
  44. public static void SplitVerticalPanel(VisualElement root, VisualElement panelA, VisualElement panelB)
  45. {
  46. #if UNITY_2020_3_OR_NEWER
  47. root.Remove(panelA);
  48. root.Remove(panelB);
  49. var spliteView = new TwoPaneSplitView();
  50. spliteView.fixedPaneInitialDimension = 300;
  51. spliteView.orientation = TwoPaneSplitViewOrientation.Vertical;
  52. spliteView.contentContainer.Add(panelA);
  53. spliteView.contentContainer.Add(panelB);
  54. root.Add(spliteView);
  55. #endif
  56. }
  57. }
  58. }
  59. #endif