示例#1
0
 private void ShowObject(UIElementTreeItem item)
 {
     GUILayout.BeginVertical();
     {
         GUILayout.BeginHorizontal();
         {
             GUILayout.Space(item.Depth * 20 + 5);
             item.IsOpen = Foldout(item, item.IsOpen);
         }
         GUILayout.EndHorizontal();
         if (item.IsOpen)
         {
             if (item.childs != null && item.childs.Count > 0)
             {
                 for (int i = 0; i < item.childs.Count; i++)
                 {
                     if (trees.ContainsKey(item.childs[i]))
                     {
                         UIElementTreeItem child = trees[item.childs[i]];
                         if (child != null)
                         {
                             ShowObject(child);
                         }
                     }
                 }
             }
         }
     }
     GUILayout.EndVertical();
 }
示例#2
0
    /// <summary>
    /// 自定义折叠页
    /// 如果当前操作的组件没有子对象,则折叠功能取消,点击后相应选中或未选中状态
    /// </summary>
    /// <param name="item"> 操作的对象 </param>
    /// <param name="display"> 是否折叠 </param>
    /// <returns></returns>
    private bool Foldout(UIElementTreeItem item, bool display)
    {
        bool isFoldout = item.childs != null && item.childs.Count > 0;

        ///Box样式
        GUIStyle style = new GUIStyle("ShurikenModuleTitle");

        style.font          = new GUIStyle(EditorStyles.label).font;
        style.border        = new RectOffset(15, 7, 4, 4);
        style.fixedHeight   = 22;
        style.contentOffset = new Vector2(isFoldout ? 35f : 20f, -2f);
        ///绘制box
        Rect rect = GUILayoutUtility.GetRect(16f, 22f, style);

        GUI.Box(rect, item.Name, style);

        if (isFoldout)
        {
            ///每一项是否能显示的Toggle
            Rect selectedRect = new Rect(rect.x + 18f, rect.y, 13f, 13f);
            item.IsGenerate = GUI.Toggle(selectedRect, item.IsGenerate, "");

            Event e          = Event.current;
            Rect  toggleRect = new Rect(rect.x + 4f, rect.y + 2f, 13f, 13f);
            if (e.type == EventType.Repaint)
            {
                EditorStyles.foldout.Draw(toggleRect, false, false, display, false);
            }

            if (e.type == EventType.MouseDown && rect.Contains(e.mousePosition))
            {
                display = !display;
                e.Use();
            }
        }
        else
        {
            Event e          = Event.current;
            Rect  toggleRect = new Rect(rect.x + 4f, rect.y, 13f, 13f);
            if (e.type == EventType.Repaint)
            {
                EditorStyles.toggle.Draw(toggleRect, false, false, item.IsGenerate, false);
            }

            if (e.type == EventType.MouseDown && rect.Contains(e.mousePosition))
            {
                item.IsGenerate = !item.IsGenerate;
                e.Use();
            }
        }
        return(display);
    }
示例#3
0
 /// <summary>
 /// 获取选择的View根节点列表
 /// </summary>
 private void GetTreeList()
 {
     OptionView = Selection.activeTransform;
     if (OptionView == null)
     {
         return;
     }
     if (trees == null || trees.Count <= 0)
     {
         trees = new Dictionary <Transform, UIElementTreeItem>();
         RectTransform[] rts = OptionView.GetComponentsInChildren <RectTransform>();
         foreach (RectTransform rt in rts)
         {
             UIElementTreeItem item = new UIElementTreeItem();
             item.gameObject = rt.gameObject;
             item.transform  = rt.transform;
             item.Name       = item.gameObject.name;
             item.Depth      = 0;
             if (item.transform != OptionView)
             {
                 item.parent = item.transform.parent;
             }
             if (item.parent != null)
             {
                 Transform parent = item.transform;
                 while (parent != OptionView)
                 {
                     item.Depth++;
                     parent = parent.parent;
                 }
             }
             if (item.transform.childCount > 0)
             {
                 item.childs = new List <Transform>();
                 for (int i = 0; i < item.transform.childCount; i++)
                 {
                     item.childs.Add(item.transform.GetChild(i));
                 }
             }
             item.IsOpen = true;
             trees.Add(item.transform, item);
         }
     }
 }
示例#4
0
 private void DrawLeft()
 {
     EditorGUILayout.BeginVertical("box", GUILayout.Width(ListWidth));
     {
         GUILayout.Space(5);
         EditorGUILayout.BeginHorizontal();
         {
             if (GUILayout.Button("All", GUILayout.Width(40)))
             {
                 AllElementUnifyOption(true);
             }
             if (GUILayout.Button("None", GUILayout.Width(40)))
             {
                 AllElementUnifyOption(false);
             }
             if (GUILayout.Button("Generate"))
             {
                 GenerateInfo(GenerateTransform);
             }
             GenerateTransform = GUILayout.Toggle(GenerateTransform, "GT", GUILayout.Width(40));
         }
         EditorGUILayout.EndHorizontal();
         GUILayout.Space(5);
         treeScroll = EditorGUILayout.BeginScrollView(treeScroll, GUILayout.Width(ListWidth));
         {
             if (OptionView != null)
             {
                 UIElementTreeItem item = trees[OptionView];
                 if (item != null)
                 {
                     ShowObject(item);
                 }
             }
         }
         EditorGUILayout.EndScrollView();
     }
     EditorGUILayout.EndVertical();
 }