1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- using UnityEditor.SceneManagement;
- using UnityEngine;
- using UnityEngine.UI;
-
- namespace UnityEditor.UI
- {
- [CustomEditor(typeof(Toggle), true)]
- [CanEditMultipleObjects]
- /// <summary>
- /// Custom Editor for the Toggle Component.
- /// Extend this class to write a custom editor for a component derived from Toggle.
- /// </summary>
- public class ToggleEditor : SelectableEditor
- {
- SerializedProperty m_OnValueChangedProperty;
- SerializedProperty m_TransitionProperty;
- SerializedProperty m_GraphicProperty;
- SerializedProperty m_GroupProperty;
- SerializedProperty m_IsOnProperty;
-
- protected override void OnEnable()
- {
- base.OnEnable();
-
- m_TransitionProperty = serializedObject.FindProperty("toggleTransition");
- m_GraphicProperty = serializedObject.FindProperty("graphic");
- m_GroupProperty = serializedObject.FindProperty("m_Group");
- m_IsOnProperty = serializedObject.FindProperty("m_IsOn");
- m_OnValueChangedProperty = serializedObject.FindProperty("onValueChanged");
- }
-
- public override void OnInspectorGUI()
- {
- base.OnInspectorGUI();
- EditorGUILayout.Space();
-
- serializedObject.Update();
- Toggle toggle = serializedObject.targetObject as Toggle;
- EditorGUI.BeginChangeCheck();
- EditorGUILayout.PropertyField(m_IsOnProperty);
- if (EditorGUI.EndChangeCheck())
- {
- if (!Application.isPlaying)
- EditorSceneManager.MarkSceneDirty(toggle.gameObject.scene);
-
- ToggleGroup group = m_GroupProperty.objectReferenceValue as ToggleGroup;
-
- toggle.isOn = m_IsOnProperty.boolValue;
-
- if (group != null && group.isActiveAndEnabled && toggle.IsActive())
- {
- if (toggle.isOn || (!group.AnyTogglesOn() && !group.allowSwitchOff))
- {
- toggle.isOn = true;
- group.NotifyToggleOn(toggle);
- }
- }
- }
- EditorGUILayout.PropertyField(m_TransitionProperty);
- EditorGUILayout.PropertyField(m_GraphicProperty);
- EditorGUI.BeginChangeCheck();
- EditorGUILayout.PropertyField(m_GroupProperty);
- if (EditorGUI.EndChangeCheck())
- {
- if (!Application.isPlaying)
- EditorSceneManager.MarkSceneDirty(toggle.gameObject.scene);
-
- ToggleGroup group = m_GroupProperty.objectReferenceValue as ToggleGroup;
- toggle.group = group;
- }
-
- EditorGUILayout.Space();
-
- // Draw the event notification options
- EditorGUILayout.PropertyField(m_OnValueChangedProperty);
-
- serializedObject.ApplyModifiedProperties();
- }
- }
- }
|