74 lines
1.6 KiB
C#
74 lines
1.6 KiB
C#
|
using UnityEngine;
|
|||
|
using UnityEngine.UI;
|
|||
|
using System.Collections;
|
|||
|
|
|||
|
public class UIButtonTime : MonoBehaviour {
|
|||
|
|
|||
|
public Button _Button;
|
|||
|
public Text _BtnText;
|
|||
|
private string _BtnOriginStr;
|
|||
|
|
|||
|
void Awake()
|
|||
|
{
|
|||
|
_BtnOriginStr = _BtnText.text;
|
|||
|
}
|
|||
|
|
|||
|
void OnEnable()
|
|||
|
{
|
|||
|
if (_StartTime > 0)
|
|||
|
{
|
|||
|
if (Time.time - _StartTime > _DisableTime)
|
|||
|
{
|
|||
|
_Button.interactable = true;
|
|||
|
_BtnText.text = _BtnOriginStr;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
int startTime = (int)(_DisableTime - (Time.time - _StartTime) + 1);
|
|||
|
SetBtnDisableTime(startTime);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// Use this for initialization
|
|||
|
void Start ()
|
|||
|
{
|
|||
|
_BtnText.text = _BtnOriginStr;
|
|||
|
}
|
|||
|
|
|||
|
void OnDisable()
|
|||
|
{
|
|||
|
StopAllCoroutines();
|
|||
|
_Button.interactable = true;
|
|||
|
_BtnText.text = _BtnOriginStr;
|
|||
|
}
|
|||
|
|
|||
|
#region interact
|
|||
|
private int _disableCountdown;
|
|||
|
private float _StartTime;
|
|||
|
private float _DisableTime;
|
|||
|
|
|||
|
public void SetBtnDisableTime(int disableTime)
|
|||
|
{
|
|||
|
_disableCountdown = disableTime;
|
|||
|
_Button.interactable = false;
|
|||
|
StartCoroutine(UpdateDisableTime());
|
|||
|
|
|||
|
_StartTime = Time.time;
|
|||
|
_DisableTime = disableTime;
|
|||
|
}
|
|||
|
|
|||
|
private IEnumerator UpdateDisableTime()
|
|||
|
{
|
|||
|
while (_disableCountdown > 0)
|
|||
|
{
|
|||
|
_BtnText.text = _BtnOriginStr + "(" + _disableCountdown + "s)";
|
|||
|
yield return new WaitForSeconds(1.0f);
|
|||
|
_disableCountdown--;
|
|||
|
}
|
|||
|
_Button.interactable = true;
|
|||
|
_BtnText.text = _BtnOriginStr;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
}
|