ExampleSlider.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. namespace Chronos.Example
  4. {
  5. // Utility class to controll a Global clock's time scale with a slider.
  6. [RequireComponent(typeof(Slider))]
  7. public class ExampleSlider : MonoBehaviour
  8. {
  9. public GlobalClock clock;
  10. public Text text;
  11. private Slider slider
  12. {
  13. get { return GetComponent<Slider>(); }
  14. }
  15. private void Start()
  16. {
  17. slider.onValueChanged.AddListener(OnValueChanged);
  18. }
  19. public void OnValueChanged(float value)
  20. {
  21. // Change the global clock's time scale
  22. clock.localTimeScale = value;
  23. }
  24. private void Update()
  25. {
  26. // Update the slider value
  27. slider.value = clock.localTimeScale;
  28. // Update the label text
  29. string sign;
  30. float value = clock.localTimeScale;
  31. if (clock.parent == null)
  32. {
  33. sign = "=";
  34. }
  35. else if (clock.parentBlend == ClockBlend.Multiplicative)
  36. {
  37. sign = "x";
  38. }
  39. else // if (clock.parentBlend == ClockBlend.Additive)
  40. {
  41. sign = clock.localTimeScale >= 0 ? "+" : "-";
  42. value = Mathf.Abs(value);
  43. }
  44. text.text = string.Format("{0} ({1} {2:0.0} = {3:0.0})", clock.key, sign, value, clock.timeScale);
  45. }
  46. }
  47. }