9 [AddComponentMenu(
"UI/Extensions/Cooldown Button")]
17 #region Private variables
20 private float cooldownTimeout;
22 private float cooldownSpeed = 1;
23 [SerializeField][ReadOnly]
24 private bool cooldownActive;
25 [SerializeField][ReadOnly]
26 private bool cooldownInEffect;
27 [SerializeField][ReadOnly]
28 private float cooldownTimeElapsed;
29 [SerializeField][ReadOnly]
30 private float cooldownTimeRemaining;
31 [SerializeField][ReadOnly]
32 private int cooldownPercentRemaining;
33 [SerializeField][ReadOnly]
34 private int cooldownPercentComplete;
36 PointerEventData buttonSource;
39 #region Public Properties
43 get {
return cooldownTimeout; }
44 set { cooldownTimeout = value; }
49 get {
return cooldownSpeed; }
50 set { cooldownSpeed = value; }
55 get {
return cooldownInEffect; }
60 get {
return cooldownActive; }
61 set { cooldownActive = value; }
66 get {
return cooldownTimeElapsed; }
67 set { cooldownTimeElapsed = value; }
72 get {
return cooldownTimeRemaining; }
77 get {
return cooldownPercentRemaining; }
82 get {
return cooldownPercentComplete; }
88 [Tooltip(
"Event that fires when a button is initially pressed down")]
90 [Tooltip(
"Event that fires when a button is released")]
92 [Tooltip(
"Event that continually fires while a button is held down")]
103 cooldownTimeRemaining -= Time.deltaTime * cooldownSpeed;
105 if (cooldownTimeRemaining < 0)
111 cooldownPercentRemaining = (int)(100 * cooldownTimeRemaining *
CooldownTimeout / 100);
118 #region Public Methods
147 PointerEventData emptySource =
new PointerEventData(EventSystem.current);
148 buttonSource = emptySource;
150 cooldownTimeRemaining = cooldownTimeout;
160 cooldownTimeRemaining = 0;
161 cooldownPercentRemaining = 0;
162 cooldownPercentComplete = 100;
163 cooldownActive = cooldownInEffect =
false;
172 cooldownActive = cooldownInEffect =
false;
177 #region IPointerDownHandler
179 void IPointerDownHandler.OnPointerDown(PointerEventData eventData)
181 buttonSource = eventData;
189 cooldownTimeRemaining = cooldownTimeout;
190 cooldownActive = cooldownInEffect =
true;
Credit Erdener Gonenc - @PixelEnvision.