MenuItemYIUIAllView.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using UnityEditor;
  2. using UnityEngine;
  3. namespace YIUIFramework.Editor
  4. {
  5. public static class MenuItemYIUIAllView
  6. {
  7. [MenuItem("GameObject/YIUI/Create UIAllView", false, 4)]
  8. static void CreateYIUIAllViewByGameObject()
  9. {
  10. var activeObject = Selection.activeObject as GameObject;
  11. if (activeObject == null)
  12. {
  13. UnityTipsHelper.ShowError($"请选择一个目标");
  14. return;
  15. }
  16. var uiBindCDETable = activeObject.GetComponent<UIBindCDETable>();
  17. if (uiBindCDETable == null)
  18. {
  19. UnityTipsHelper.ShowError($"请选择一个UIBindCDETable组件的GameObject");
  20. return;
  21. }
  22. if (uiBindCDETable.UICodeType != EUICodeType.Panel)
  23. {
  24. UnityTipsHelper.ShowError($"请选择一个面板类型的UIBindCDETable组件的GameObject");
  25. return;
  26. }
  27. if (uiBindCDETable.PanelSplitData.AllViewParent != null)
  28. {
  29. UnityTipsHelper.ShowError($"该面板已经创建过AllView");
  30. return;
  31. }
  32. Selection.activeObject = CreateYIUIAllView(uiBindCDETable);
  33. }
  34. public static GameObject CreateYIUIAllView(UIBindCDETable panelCdeTable )
  35. {
  36. var allViewObject = new GameObject();
  37. allViewObject.name = YIUIConstHelper.Const.UIAllViewParentName;
  38. var viewRect = allViewObject.GetOrAddComponent<RectTransform>();
  39. allViewObject.GetOrAddComponent<CanvasRenderer>();
  40. viewRect.SetParent(panelCdeTable.transform, false);
  41. viewRect.ResetToFullScreen();
  42. allViewObject.SetLayerRecursively(LayerMask.NameToLayer("UI"));
  43. panelCdeTable.PanelSplitData.AllViewParent = viewRect;
  44. panelCdeTable.PanelSplitData.AllCommonView.Clear();
  45. panelCdeTable.PanelSplitData.AllCreateView.Clear();
  46. EditorUtility.SetDirty(panelCdeTable);
  47. return allViewObject;
  48. }
  49. }
  50. }