namespace UIWidgets.Examples { using System; using UIWidgets; using UnityEngine; using UnityEngine.Serialization; using UnityEngine.UI; /// /// CenteredSlider with label. /// [RequireComponent(typeof(CenteredSlider))] public class CenteredSliderLabel : MonoBehaviour, IUpgradeable { /// /// Label to display slider value. /// [SerializeField] [FormerlySerializedAs("label")] [HideInInspector] [Obsolete("Replaced with LabelAdapter.")] protected Text Label; /// /// Label to display slider value. /// [SerializeField] protected TextAdapter LabelAdapter; /// /// Current slider. /// [HideInInspector] [NonSerialized] protected CenteredSlider Slider; /// /// Start this instance. /// protected virtual void Start() { Init(); } /// /// Init and adds listeners. /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "HAA0603:Delegate allocation from a method group", Justification = "Required")] protected virtual void Init() { Slider = GetComponent(); if (Slider != null) { Slider.OnValueChanged.AddListener(ValueChanged); ValueChanged(Slider.Value); } } /// /// Callback when slider value changed. /// /// Value. protected virtual void ValueChanged(int value) { LabelAdapter.text = value.ToString(); } /// /// Remove listeners. /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "HAA0603:Delegate allocation from a method group", Justification = "Required")] protected virtual void OnDestroy() { if (Slider != null) { Slider.OnValueChanged.RemoveListener(ValueChanged); } } /// /// Upgrade this instance. /// public virtual void Upgrade() { #pragma warning disable 0612, 0618 Utilities.GetOrAddComponent(Label, ref LabelAdapter); #pragma warning restore 0612, 0618 } #if UNITY_EDITOR /// /// Validate this instance. /// protected virtual void OnValidate() { Compatibility.Upgrade(this); } #endif } }