You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.9 KiB
80 lines
2.9 KiB
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(); |
|
} |
|
} |
|
}
|
|
|