/// <summary> /// 最最最关键的部分,定时计算的步骤 /// 每0.2s走一次,没走一次多1min /// </summary> /// <returns></returns> private IEnumerator TickCoroutine() { while (true) { var curMin = TotalMinutes + Speed; // 如果是暂停就溜了溜了 if (curMin != TotalMinutes) { // 先把时间同步一哈 TotalMinutes = curMin; SyncTime(); Health = Patient = Treated = Infected = 0; // 开始过各行省该tick内的流程 for (int i = 0; i < Data.numOfProvince; i++) { Province province = provinces[i]; // 拿到加成下的疾病 Disease disease = GetDisease(province); // 拿到加成下的行省 province.BeforeTick(); if (isAlert) { Loimology.SEITRD_Tick(disease, province, province); } else { Loimology.Unaware_Tick(disease, province, province); } // 重新计算全国的数据 Health += province.Health; Patient += province.Patient; Treated += province.Treated; Infected += province.Infected; } Debug.LogWarningFormat("Time:{0} H:{1} P:{2} T:{3} I:{4}", TotalMinutes, Health, Patient, Treated, Infected); if (Infected == 0) { Debug.Log("33"); } _E.TriggerEvent(EventID.TickEnd); } yield return(new WaitForSeconds(0.2f)); } }