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
}
}