Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- public class Bar : MonoBehaviour
- {
- [SerializeField] private float _speed;
- [SerializeField] private ParticleSystem _flameEffect;
- [SerializeField] private Image _fillImage;
- [SerializeField] private Gradient _gradient;
- private Slider _slider;
- private float _value;
- private bool _isFlameStop = true;
- private void Start()
- {
- _slider = GetComponent<Slider>();
- _slider.onValueChanged.AddListener(ValueChanged);
- _value = _slider.value;
- _fillImage.color = _gradient.Evaluate(0f);
- }
- public void ChangeValue(float value)
- {
- _value = value;
- ChangeColor();
- MoveSlider();
- }
- private void ChangeColor()
- {
- _fillImage.color = _gradient.Evaluate(1f - _slider.normalizedValue);
- }
- private void MoveSlider()
- {
- if (_slider.normalizedValue <= 0.01f)
- {
- HideSlider();
- return;
- }
- _slider.value = Mathf.MoveTowards(_slider.value, _value, _speed);
- }
- private void HideSlider()
- {
- _flameEffect.Stop();
- _fillImage.color = Color.black;
- }
- private void ValueChanged(float value)
- {
- if (_isFlameStop)
- {
- _flameEffect.Play();
- _isFlameStop = !_isFlameStop;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement