В корутине заполняешь с течением времени.
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
public class SliderFilling : MonoBehaviour
{
[SerializeField] private Slider _slider = null;
[SerializeField] private float _fillTime = 3f;
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
StartCoroutine(FillValue(0.5f));
}
}
private IEnumerator FillValue(float value)
{
var estimateTime = 0f;
while(estimateTime < _fillTime)
{
estimateTime += Time.deltaTime;
_slider.value = Mathf.Lerp(0, value, estimateTime / _fillTime);
yield return null;
}
}
}