Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- //Script created and wrote by Robert James P IV, Free to use if you wish, No credit needed have a nice day.
- public class Display_Slider : MonoBehaviour
- {
- //Version 0.1 Completed nothing else to add to sliders as of version 0.1
- //DO NOT EDIT unless more mechanics where added to sliders.
- #region ObjectReference
- private GameObject _sliderObject;
- private Slider _slider;
- [SerializeField]
- [Tooltip("The slider values fill image")]
- private Image _sliderFill;
- #endregion
- #region Thresholds
- [SerializeField]
- [Tooltip("The percentage of the max slider value you want to be considered positive value, i.e 0.00 - 1.00")]
- private float _sliderPositiveThresholdMutliplier;
- [SerializeField]
- [Tooltip("The percentage of the max slider value you want to be considered negative value, i.e 0.00 - 1.00")]
- private float _sliderNegativeThreshholdMultiplier;
- private float _sliderPositiveThreshold;
- private float _sliderNegativeThreshold;
- #endregion
- #region Colour
- [SerializeField]
- [Tooltip("The positive colour to display when slider current value > positive threshold")]
- private Color _sliderPositiveColor;
- [SerializeField]
- [Tooltip("The neutral colour to display when slider current value < positive threshold but > negative threshold")]
- private Color _sliderNeutralColor;
- [SerializeField]
- [Tooltip("The negative colour to display when slider current value < positive threshold && negative threshold")]
- private Color _sliderNegativeColor;
- #endregion
- #region Animation
- [SerializeField]
- [Tooltip("It is the anim time controlled by a Ienumarator wait for seconds")]
- private float _sliderAnimTime;
- #endregion
- #region Testing_Vars
- [SerializeField]
- [Tooltip("Tests The Slider the script is attached too")]
- private bool _testSlider;
- [SerializeField]
- [Tooltip("Tests The Slider max value")]
- private int _testSliderMax;
- [SerializeField]
- [Tooltip("Tests The Slider current value")]
- private int _testSliderCurrent;
- [SerializeField]
- [Tooltip("Tests The animation of the slider value")]
- private bool _testSliderAnimated;
- [SerializeField]
- [Tooltip("Tests The increase or decrease to value of slider")]
- private bool _testSliderIncrease;
- [SerializeField]
- [Tooltip("Give an amount of ints to test on the sliders functional inputs")]
- private int _testSliderAmount;
- #endregion
- #region Public_Getters
- public bool Slider_CheckIsActive()
- {
- if (_sliderObject.activeInHierarchy) { return true; } else if (!_sliderObject.activeInHierarchy) { return false; } else { return false; }
- }
- #endregion
- #region Functions
- private void Awake()
- {
- if (_slider == null) { _slider = GetComponent<Slider>(); }
- if (_sliderObject == null) { _sliderObject = gameObject; }
- _sliderPositiveColor = Color.green;
- _sliderNegativeColor = Color.red;
- _sliderNeutralColor = Color.yellow;
- _slider.interactable = false;
- }
- private void Start()
- {
- //Run a test no anim and anim
- if (_testSlider)
- {
- Slider_SetSlider(0, _testSliderMax, _testSliderCurrent);
- Slider_ControlSlider(_testSliderAnimated, _testSliderIncrease, _testSliderAmount);
- }
- }
- private void Update()
- {
- if (_slider.value >= _sliderPositiveThreshold)
- {
- _sliderFill.color = _sliderPositiveColor;
- } else if (_slider.value < _sliderPositiveThreshold && _slider.value > _sliderNegativeThreshold)
- {
- _sliderFill.color = _sliderNeutralColor;
- } else { _sliderFill.color = _sliderNegativeColor; _sliderFill.color = new Color(_sliderFill.color.r, _sliderFill.color.g, _sliderFill.color.b, _slider.value); }
- }
- public void Slider_SetSlider(int min, int max, int current)
- {
- //This function is called Externally by a value control script i.e Health, Damage controllers
- _slider.minValue = min;
- _slider.maxValue = max;
- _slider.value = current;
- _sliderPositiveThreshold = max * _sliderPositiveThresholdMutliplier;
- _sliderNegativeThreshold = max * _sliderNegativeThreshholdMultiplier;
- }
- public void Slider_ControlSlider(bool animated, bool increase, int amount)
- {
- if (!animated)
- {
- if (increase)
- {
- _slider.value += amount;
- } else if (!increase)
- {
- _slider.value -= amount;
- }
- } else if (animated)
- {
- StartCoroutine(Slider_Anim(increase, amount));
- }
- }
- public void Slider_DisplaySlider()
- {
- if (!_sliderObject.activeInHierarchy) { _sliderObject.SetActive(true); } else if (_sliderObject.activeInHierarchy) { _sliderObject.SetActive(false); }
- }
- #endregion
- #region SliderValues_Ienums
- private IEnumerator Slider_Anim(bool increase, int amount)
- {
- int index = amount;
- //If your wondering why there is many do loops it's for my own detection for future versions of my game
- //it's not a mistake
- if (!increase)
- {
- do
- {
- _slider.value--;
- index--;
- yield return new WaitForSeconds(_sliderAnimTime/20);
- } while (index > 100);
- do
- {
- _slider.value--;
- index--;
- yield return new WaitForSeconds(_sliderAnimTime / 20);
- } while (index > 10 && index < 100);
- do
- {
- _slider.value--;
- index--;
- yield return new WaitForSeconds(_sliderAnimTime/20);
- } while (index < 10 && index > 0);
- } else if (increase)
- {
- do
- {
- _slider.value++;
- index--;
- yield return new WaitForSeconds(_sliderAnimTime / 20);
- } while (index > 100);
- do
- {
- _slider.value++;
- index--;
- yield return new WaitForSeconds(_sliderAnimTime / 20);
- } while (index > 10 && index < 100);
- do
- {
- _slider.value++;
- index--;
- yield return new WaitForSeconds(_sliderAnimTime/20);
- } while (index < 10 && index > 0);
- }
- yield break;
- }
- #endregion
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement