/// <summary> /// 更新深度Point /// </summary> public void UpdateDepthPoint() { //更新父级层级 if (depth != null) { depth.Order = mainOrder; } foreach (Transform item in depth.transform) { UIDepth depth = item.GetComponent <UIDepth>(); if (depth) { if (childItem.Find(x => x.depth == depth) == null) { UIDepthPoint uIDepth = new UIDepthPoint() { depth = depth }; childItem.Add(uIDepth); } } } //用于清空 手动删除的NUll for (int i = 0; i < childItem.Count; i++) { if (childItem[i].depth == null) { childItem.RemoveAt(i);//清除这个空引用 } else { childItem[i].mainOrder = mainOrder + mainOrder;//主节点索引 childItem[i].depth.Order = mainOrder + mainOrder; childItem[i].UpdateDepthPoint(); } } }
private void UpdateUIDepthPointGUI(UIDepthPoint point) { GUILayout.BeginHorizontal(EditorStyles.helpBox); GUILayout.BeginHorizontal(); EditorGUILayout.LabelField("层级", GUILayout.MaxWidth(40)); GUI.color = Color.red; EditorGUILayout.IntField(point.mainOrder, GUILayout.MaxWidth(30)); GUI.color = Color.white; EditorGUILayout.LabelField("ISUI:", GUILayout.MaxWidth(40)); GUI.color = point.depth.IsUI? Color.green:Color.red; point.depth.IsUI = EditorGUILayout.Toggle(point.depth.IsUI, GUILayout.MaxWidth(20)); GUI.color = Color.white; EditorGUILayout.LabelField("point:", GUILayout.MaxWidth(40)); EditorGUILayout.ObjectField(point.depth, typeof(UIDepthPoint), GUILayout.MaxWidth(100)); GUILayout.EndHorizontal(); GUILayout.BeginVertical(EditorStyles.helpBox); for (int i = 0; i < point.childItem.Count; i++) { UpdateUIDepthPointGUI(point.childItem[i]); } GUILayout.EndVertical(); GUILayout.EndHorizontal(); }