summaryrefslogtreecommitdiff
path: root/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Toggle.cs
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-04-07 19:10:30 +0800
committerchai <chaifix@163.com>2021-04-07 19:10:30 +0800
commite7dfbec8e8634e767d78959941daf71a96e021cf (patch)
tree58895a7c60df0bd3f316e6461051eabd1c0a51e1 /Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Toggle.cs
parentff5a3fbf31db349db11bbc5c60ba199d26780f19 (diff)
*移动目录
Diffstat (limited to 'Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Toggle.cs')
-rw-r--r--Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Toggle.cs242
1 files changed, 0 insertions, 242 deletions
diff --git a/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Toggle.cs b/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Toggle.cs
deleted file mode 100644
index 5dc9275..0000000
--- a/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Toggle.cs
+++ /dev/null
@@ -1,242 +0,0 @@
-using System;
-using UnityEngine.Events;
-using UnityEngine.EventSystems;
-using UnityEngine.Serialization;
-
-namespace UnityEngine.UI
-{
- /// <summary>
- /// Simple toggle -- something that has an 'on' and 'off' states: checkbox, toggle button, radio button, etc.
- /// </summary>
- [AddComponentMenu("UI/Toggle", 31)]
- [RequireComponent(typeof(RectTransform))]
- public class Toggle : Selectable, IPointerClickHandler, ISubmitHandler, ICanvasElement
- {
- public enum ToggleTransition
- {
- None,
- Fade
- }
-
- [Serializable]
- public class ToggleEvent : UnityEvent<bool>
- {}
-
- /// <summary>
- /// Transition type.
- /// </summary>
- public ToggleTransition toggleTransition = ToggleTransition.Fade;
-
- /// <summary>
- /// Graphic the toggle should be working with.
- /// </summary>
- public Graphic graphic;
-
- // group that this toggle can belong to
- [SerializeField]
- private ToggleGroup m_Group;
-
- public ToggleGroup group
- {
- get { return m_Group; }
- set
- {
- m_Group = value;
-#if UNITY_EDITOR
- if (Application.isPlaying)
-#endif
- {
- SetToggleGroup(m_Group, true);
- PlayEffect(true);
- }
- }
- }
-
- /// <summary>
- /// Allow for delegate-based subscriptions for faster events than 'eventReceiver', and allowing for multiple receivers.
- /// </summary>
- public ToggleEvent onValueChanged = new ToggleEvent();
-
- // Whether the toggle is on
- [FormerlySerializedAs("m_IsActive")]
- [Tooltip("Is the toggle currently on or off?")]
- [SerializeField]
- private bool m_IsOn;
-
- protected Toggle()
- {}
-
-#if UNITY_EDITOR
- protected override void OnValidate()
- {
- base.OnValidate();
-
- var prefabType = UnityEditor.PrefabUtility.GetPrefabType(this);
- if (prefabType != UnityEditor.PrefabType.Prefab && !Application.isPlaying)
- CanvasUpdateRegistry.RegisterCanvasElementForLayoutRebuild(this);
- }
-
-#endif // if UNITY_EDITOR
-
- public virtual void Rebuild(CanvasUpdate executing)
- {
-#if UNITY_EDITOR
- if (executing == CanvasUpdate.Prelayout)
- onValueChanged.Invoke(m_IsOn);
-#endif
- }
-
- public virtual void LayoutComplete()
- {}
-
- public virtual void GraphicUpdateComplete()
- {}
-
- protected override void OnEnable()
- {
- base.OnEnable();
- SetToggleGroup(m_Group, false);
- PlayEffect(true);
- }
-
- protected override void OnDisable()
- {
- SetToggleGroup(null, false);
- base.OnDisable();
- }
-
- protected override void OnDidApplyAnimationProperties()
- {
- // Check if isOn has been changed by the animation.
- // Unfortunately there is no way to check if we don�t have a graphic.
- if (graphic != null)
- {
- bool oldValue = !Mathf.Approximately(graphic.canvasRenderer.GetColor().a, 0);
- if (m_IsOn != oldValue)
- {
- m_IsOn = oldValue;
- Set(!oldValue);
- }
- }
-
- base.OnDidApplyAnimationProperties();
- }
-
- private void SetToggleGroup(ToggleGroup newGroup, bool setMemberValue)
- {
- ToggleGroup oldGroup = m_Group;
-
- // Sometimes IsActive returns false in OnDisable so don't check for it.
- // Rather remove the toggle too often than too little.
- if (m_Group != null)
- m_Group.UnregisterToggle(this);
-
- // At runtime the group variable should be set but not when calling this method from OnEnable or OnDisable.
- // That's why we use the setMemberValue parameter.
- if (setMemberValue)
- m_Group = newGroup;
-
- // Only register to the new group if this Toggle is active.
- if (newGroup != null && IsActive())
- newGroup.RegisterToggle(this);
-
- // If we are in a new group, and this toggle is on, notify group.
- // Note: Don't refer to m_Group here as it's not guaranteed to have been set.
- if (newGroup != null && newGroup != oldGroup && isOn && IsActive())
- newGroup.NotifyToggleOn(this);
- }
-
- /// <summary>
- /// Whether the toggle is currently active.
- /// </summary>
- public bool isOn
- {
- get { return m_IsOn; }
- set
- {
- Set(value);
- }
- }
-
- void Set(bool value)
- {
- Set(value, true);
- }
-
- void Set(bool value, bool sendCallback)
- {
- if (m_IsOn == value)
- return;
-
- // if we are in a group and set to true, do group logic
- m_IsOn = value;
- if (m_Group != null && IsActive())
- {
- if (m_IsOn || (!m_Group.AnyTogglesOn() && !m_Group.allowSwitchOff))
- {
- m_IsOn = true;
- m_Group.NotifyToggleOn(this);
- }
- }
-
- // Always send event when toggle is clicked, even if value didn't change
- // due to already active toggle in a toggle group being clicked.
- // Controls like Dropdown rely on this.
- // It's up to the user to ignore a selection being set to the same value it already was, if desired.
- PlayEffect(toggleTransition == ToggleTransition.None);
- if (sendCallback)
- {
- UISystemProfilerApi.AddMarker("Toggle.value", this);
- onValueChanged.Invoke(m_IsOn);
- }
- }
-
- /// <summary>
- /// Play the appropriate effect.
- /// </summary>
- private void PlayEffect(bool instant)
- {
- if (graphic == null)
- return;
-
-#if UNITY_EDITOR
- if (!Application.isPlaying)
- graphic.canvasRenderer.SetAlpha(m_IsOn ? 1f : 0f);
- else
-#endif
- graphic.CrossFadeAlpha(m_IsOn ? 1f : 0f, instant ? 0f : 0.1f, true);
- }
-
- /// <summary>
- /// Assume the correct visual state.
- /// </summary>
- protected override void Start()
- {
- PlayEffect(true);
- }
-
- private void InternalToggle()
- {
- if (!IsActive() || !IsInteractable())
- return;
-
- isOn = !isOn;
- }
-
- /// <summary>
- /// React to clicks.
- /// </summary>
- public virtual void OnPointerClick(PointerEventData eventData)
- {
- if (eventData.button != PointerEventData.InputButton.Left)
- return;
-
- InternalToggle();
- }
-
- public virtual void OnSubmit(BaseEventData eventData)
- {
- InternalToggle();
- }
- }
-}