powerfun-unity/Assets/RaceScript.cs
2021-07-23 15:04:46 +08:00

83 lines
2.1 KiB
C#

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;
}
/// <summary>
/// 通过消息调用,子给父传
/// </summary>
/// <param name="t"></param>
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<RaceItemScript>().mapCompetition;
var time = map.StartTime.ToLocalTime() - UIManager.Now.GetDateTime();
if (time.TotalSeconds < 0)
{
currentItem.Find("GetReadyContainer").GetComponent<CanvasGroup>().alpha = 0;
}
else
{
currentItem.Find("GetReadyContainer").GetComponent<CanvasGroup>().alpha = 1;
currentItem.Find("GetReadyContainer/Value").GetComponent<Text>().text
= Utils.GetCountDown(time);
}
}
}
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}