public override void OnInspectorGUI() { base.OnInspectorGUI(); if (Target.ParentComponent || Target.IsPrefab()) { EditorGUILayout.PropertyField(_openType, new GUIContent("Open Type")); EditorGUILayout.PropertyField(_closeType, new GUIContent("Close Type")); } else { var toggle = EditorGUILayout.Toggle(new GUIContent("Auto Open"), Target.OpenType != UIOpenType.Manual); if (toggle) { var openType = (UIOpenType)_openType.intValue; if (openType == UIOpenType.Manual) { _openType.intValue = (int)UIOpenType.Auto; var group = Target.GetComponent <UIComponentGroup>(); if (group) { UIComponentGroupEditor.SetGroupToAutoOpen(group); } } } else { _openType.intValue = (int)UIOpenType.Manual; } EGUI.Readonly(() => { EditorGUILayout.Toggle(new GUIContent("Manual Close"), true); _closeType.intValue = (int)UIOpenType.Manual; }); } EditorGUILayout.PropertyField(_overrideParent, new GUIContent("Override Parent")); GUILayout.Space(10); EditorGUILayout.PropertyField(_beforeOpenEvent); EditorGUILayout.PropertyField(_afterOpenEvent); EditorGUILayout.PropertyField(_beforeCloseEvent); EditorGUILayout.PropertyField(_afterCloseEvent); if (targets.Length > 1) { return; } GUILayout.Space(10); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (Application.isPlaying) { GUI.enabled = !Target.OpenConditions || Target.OpenConditions.CanOpen; var label = Target.IsOpened ? "Close" : "Open"; if (GUILayout.Button(label, GUILayout.MaxWidth(180))) { if (Target.IsOpened) { Target.Close(); } else { Target.Open(); } } GUI.enabled = Target.HasAnimator; label = "Reset"; if (GUILayout.Button(label, GUILayout.MaxWidth(180))) { Animator.ResetToSavedPropertiesGraceful(); EventSystem.current.SetSelectedGameObject(Target.gameObject); } GUI.enabled = true; } else { if (EGUI.AddComponentsButton("Add Helper Component", Target.gameObject, Helpers)) { UpdateHelpers(); } } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.Space(10); serializedObject.ApplyModifiedProperties(); }