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 }