using Assets.Scripts; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class RaceScript : PFUIPanel { // Start is called before the first frame update protected Transform currentItem { get; set; } protected void StartTime() { timerFlag = true; StartCoroutine(Timer()); } protected void StopTime() { timerFlag = false; } /// /// 通过消息调用,子给父传 /// /// public void SetCurrentItem(Transform t) { currentItem = t; HandleTime(); if (t != null) { StartTime(); } else { StopTime(); } } /*参考代码 var second = Math.Ceiling((Now - mapCompetition.StartTime.ToLocalTime()).TotalSeconds); var ts = TimeSpan.FromSeconds(second); return $"{ (int)ts.TotalHours }:{ts:mm}:{ts:ss}";*/ private bool timerFlag = false; IEnumerator Timer() { while (timerFlag) { yield return new WaitForSeconds(1.0f); // 停止执行1秒 HandleTime(); //time = UIManager.Now.GetDateTime().AddSeconds(1); } } private void HandleTime() { if (currentItem != null && currentItem.Find("GetReadyContainer").gameObject.activeSelf) { var map = currentItem.GetComponent().mapCompetition; Debug.Log(map.Status); if (map.Status == 1) { currentItem.Find("GetReadyContainer/Title").GetComponent().text = "Application Start Time"; currentItem.Find("GetReadyContainer/Value").GetComponent().text = map.StartApplyTime.ToString("yyyy-MM-dd HH:mm"); currentItem.Find("GetReadyContainer-2/Title").GetComponent().text = "Race Start Time"; currentItem.Find("GetReadyContainer-2/Value").GetComponent().text = map.StartTime.ToString("yyyy-MM-dd HH:mm"); } else { //Dictionary var time = (map.Status == 1 ? map.StartTime.ToLocalTime() : map.EndTime.ToLocalTime()) - UIManager.Now.GetDateTime(); if (time.TotalSeconds < 0) { currentItem.Find("GetReadyContainer").GetComponent().alpha = 0; } else { currentItem.Find("GetReadyContainer").GetComponent().alpha = 1; currentItem.Find("GetReadyContainer/Title").GetComponent().text = map.Status == 1 ? "Get Ready" : "Riding Time"; currentItem.Find("GetReadyContainer/Value").GetComponent().text = Utils.GetCountDown(time); } } } } void Start() { } // Update is called once per frame void Update() { } }