暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

ToggleEditor.cs 2.9KB

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