Создаешь два gameobjecta - один с кнопкой, второй со слайдером. У слайдера выключаешь возможность управлять через мышь и убираешь лишние элементы, чтобы получился слайдер с заполнением. Выставляешь MinMax = 0, 1;
Затем заводишь скрипт ProgressBar.cs и вешаешь на Slider.
[SerializeField] private Button activationButton;
[SerializeField] private Slider progressSlider;
[SerializeField] private float speed = 1;
private void OnEnable()
{
activationButton.onClick.AddListener(Press);
}
private void OnDisable()
{
activationButton.onClick.RemoveListener(Press);
}
private void Press()
{
activationButton.onClick.RemoveListener(Press);
StartCoroutine(Loop());
IEnumerator Loop()
{
for (var i=progressSlider.value; i<1f; i+= Time.deltaTime * speed)
{
progressSlider.value = i;
yield return null;
}
}
}