IEnumerator TiliRecoverCorou() { while (!destroyed) { System.TimeSpan ts1 = new System.TimeSpan(System.DateTime.Now.Ticks); System.TimeSpan ts2 = new System.TimeSpan(System.Convert.ToDateTime(SettingManager.Instance.TiliRecoverTime).Ticks); System.TimeSpan ts = ts1.Subtract(ts2).Duration(); int count = (int)(ts.TotalSeconds) / recoverDuration; int remained = (int)(ts.TotalSeconds) % recoverDuration; count = SettingManager.Instance.TotalTili + count; SettingManager.Instance.TotalTili = Mathf.Min(20, count); if (SettingManager.Instance.TotalTili >= 20) { tiliRemained.gameObject.SetActive(false); EventService.Instance.GetEvent <TiliChangeEvent>().Publish(SettingManager.Instance.TotalTili); break; } else { tiliRemained.gameObject.SetActive(true); tiliRemained.text = Ultilities.ConvertSecondToTime(recoverDuration - remained); if (remained <= 0) { SettingManager.Instance.TotalTili += 1; EventService.Instance.GetEvent <TiliChangeEvent>().Publish(SettingManager.Instance.TotalTili); } } yield return(new WaitForSeconds(1)); } }
/// <summary> /// 倒计时 /// </summary> /// <param name="seconds">总时间</param> /// <returns></returns> public IEnumerator DoCountDown(int seconds) { while (isStop) { if (seconds - Time.timeSinceLevelLoad < 0) { StopCoroutine("DoCountDown"); ResultDialog.Popup(false); yield return(isStop = false); break; } UIBattleSceneLogic.Instance.TimeChange(Ultilities.ConvertSecondToTime((int)(seconds - Time.timeSinceLevelLoad))); yield return(new WaitForSeconds(1f)); } }