using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; [DisallowMultipleComponent] public class SmoothSlider : MonoBehaviour { [SerializeField] Slider m_Slider; public Slider slider { get { return m_Slider; } } [SerializeField] [Range(0, 10)] float m_Delay = 0.2f; public float delay { get { return m_Delay; } set { m_Delay = Mathf.Clamp(value, 0, 10); } } [SerializeField] [Range(0, 1)] float m_Value = 0f; public float value { get { return m_Value; } set { m_Value = Mathf.Clamp01(value); } } float refSpeed = 0f; public void ResetValue(float _value) { value = _value; if (slider != null) { slider.value = Mathf.Clamp01(_value); } } void OnEnable() { refSpeed = 0f; } void LateUpdate() { if (slider == null) { return; } if (Mathf.Abs(slider.value - value) > 0.001f) { slider.value = Mathf.SmoothDamp(slider.value, value, ref refSpeed, delay); } } }