private void DrawGameObjectItem(Object item, List <MonoBehaviour> children, bool oddLine) { var multipleMonos = children.Count > 1; GUILayout.BeginHorizontal(oddLine ? line1Style : line2Style); using (new GUILayout.VerticalScope()) { var showObj = !_hidedObjects.Contains(item); // Label DrawItemTitle(goIcon, item, showObj); if (showObj) { for (var i = 0; i < children.Count; i++) { using (var check = new EditorGUI.ChangeCheckScope()) { var instance = children[i]; var cursor = instance.GetType(); var show = !_hidedMonoBehaviours.Contains(instance); var fields = UniInspectEditor.GetFields(instance); var serializedObject = new SerializedObject(instance); if (multipleMonos) { EditorGUILayout.BeginVertical(EditorStyles.helpBox); var displayName = string.Format("{0} [{1}]", cursor.Name, show ? "-" : "+"); ToggleButton(displayName, show, () => _hidedMonoBehaviours.Add(instance), () => _hidedMonoBehaviours.Remove(instance), centeredLabelStyle); } if (show) { for (var j = 0; j < fields.Count; j++) { var field = fields[j]; var sp = serializedObject.FindProperty(field.Name); if (sp == null) { continue; } EditorGUILayout.PropertyField(sp); } } if (multipleMonos) { EditorGUILayout.EndVertical(); } if (!check.changed) { continue; } serializedObject.ApplyModifiedProperties(); } } EditorGUILayout.Separator(); } } GUILayout.EndHorizontal(); }