SliderControl.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using UnityEngine.EventSystems;
  6. namespace SoftKitty.MasterCharacterCreator
  7. {
  8. public class SliderControl : MonoBehaviour, IPointerClickHandler
  9. {
  10. public bool isTitle = false;
  11. public int MyID = 0;
  12. public Slider SliderScript;
  13. public Text MyName;
  14. public Text MyValue;
  15. public float Mutiplier = 100F;
  16. public string ValueFormat = "0";
  17. public float DefaultValue = 0.5F;
  18. public GameObject InfoObj;
  19. private float noFeedback = 0F;
  20. public void SetName(string _name)
  21. {
  22. if (MyName) MyName.text = (isTitle? "<size=24>" :"<size=21>") +_name.Substring(0,1)+"</size>"+ _name.Substring(1,_name.Length-1);
  23. }
  24. public void UpdateValue(float _value)
  25. {
  26. if (isTitle) return;
  27. noFeedback = Time.time;
  28. SliderScript.SetValueWithoutNotify(_value);
  29. if (MyValue) MyValue.text = (SliderScript.value * Mutiplier).ToString(ValueFormat);
  30. }
  31. public void OnChange()
  32. {
  33. if (Time.time < noFeedback + 0.2F || isTitle) return;
  34. if (InfoObj) InfoObj.SendMessage("SliderValueChanged", MyID);
  35. if (MyValue) MyValue.text = (SliderScript.value * Mutiplier).ToString(ValueFormat);
  36. }
  37. public void OnPointerClick(PointerEventData eventData)
  38. {
  39. if (isTitle) return;
  40. if (eventData.button == PointerEventData.InputButton.Right)
  41. {
  42. noFeedback = Time.time;
  43. SliderScript.value = DefaultValue;
  44. if (InfoObj) InfoObj.SendMessage("SliderValueChanged", MyID);
  45. if (MyValue) MyValue.text = (SliderScript.value * Mutiplier).ToString(ValueFormat);
  46. }
  47. }
  48. }
  49. }