A game about forced loneliness, made by TACStudios
at master 80 lines 2.9 kB view raw
1using UnityEditor.SceneManagement; 2using UnityEngine; 3using UnityEngine.UI; 4 5namespace UnityEditor.UI 6{ 7 [CustomEditor(typeof(Toggle), true)] 8 [CanEditMultipleObjects] 9 /// <summary> 10 /// Custom Editor for the Toggle Component. 11 /// Extend this class to write a custom editor for a component derived from Toggle. 12 /// </summary> 13 public class ToggleEditor : SelectableEditor 14 { 15 SerializedProperty m_OnValueChangedProperty; 16 SerializedProperty m_TransitionProperty; 17 SerializedProperty m_GraphicProperty; 18 SerializedProperty m_GroupProperty; 19 SerializedProperty m_IsOnProperty; 20 21 protected override void OnEnable() 22 { 23 base.OnEnable(); 24 25 m_TransitionProperty = serializedObject.FindProperty("toggleTransition"); 26 m_GraphicProperty = serializedObject.FindProperty("graphic"); 27 m_GroupProperty = serializedObject.FindProperty("m_Group"); 28 m_IsOnProperty = serializedObject.FindProperty("m_IsOn"); 29 m_OnValueChangedProperty = serializedObject.FindProperty("onValueChanged"); 30 } 31 32 public override void OnInspectorGUI() 33 { 34 base.OnInspectorGUI(); 35 EditorGUILayout.Space(); 36 37 serializedObject.Update(); 38 Toggle toggle = serializedObject.targetObject as Toggle; 39 EditorGUI.BeginChangeCheck(); 40 EditorGUILayout.PropertyField(m_IsOnProperty); 41 if (EditorGUI.EndChangeCheck()) 42 { 43 if (!Application.isPlaying) 44 EditorSceneManager.MarkSceneDirty(toggle.gameObject.scene); 45 46 ToggleGroup group = m_GroupProperty.objectReferenceValue as ToggleGroup; 47 48 toggle.isOn = m_IsOnProperty.boolValue; 49 50 if (group != null && group.isActiveAndEnabled && toggle.IsActive()) 51 { 52 if (toggle.isOn || (!group.AnyTogglesOn() && !group.allowSwitchOff)) 53 { 54 toggle.isOn = true; 55 group.NotifyToggleOn(toggle); 56 } 57 } 58 } 59 EditorGUILayout.PropertyField(m_TransitionProperty); 60 EditorGUILayout.PropertyField(m_GraphicProperty); 61 EditorGUI.BeginChangeCheck(); 62 EditorGUILayout.PropertyField(m_GroupProperty); 63 if (EditorGUI.EndChangeCheck()) 64 { 65 if (!Application.isPlaying) 66 EditorSceneManager.MarkSceneDirty(toggle.gameObject.scene); 67 68 ToggleGroup group = m_GroupProperty.objectReferenceValue as ToggleGroup; 69 toggle.group = group; 70 } 71 72 EditorGUILayout.Space(); 73 74 // Draw the event notification options 75 EditorGUILayout.PropertyField(m_OnValueChangedProperty); 76 77 serializedObject.ApplyModifiedProperties(); 78 } 79 } 80}