ShanxiKnowledgeBase/SXElectricalInspection/Assets/Script/Timers.cs

93 lines
2.1 KiB
C#

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using Newtonsoft.Json;
using UnityEngine.Networking;
using Utility;
using System;
using UnityEngine.Events;
public class Timers : MonoBehaviour
{
public bool isRun = false;
public float limitTime = 0;
public float countTime = 0;
public Text guiTimer; // 用于显示计时器的 Text 组件
public UnityEvent timeOver;
// Start 方法在脚本激活时运行,用于初始化计时器
void Start()
{
StartCoroutine(LoadJSON(Application.streamingAssetsPath + "/Timer.config"));
guiTimer.text = StringHelper.GetCountDownStr((int)countTime);
}
// 运行计时器
public void RunTimer()
{
isRun = true;
}
// 暂停或恢复计时器
public void PauseTimer()
{
isRun = false;
}
// 结束计时器
public void EndTimer()
{
isRun = false;
}
// Update 方法在每一帧运行,用于更新计时器的状态和显示
private void Update()
{
if (isRun)
Timer();
}
/// <summary>
/// 计时
/// </summary>
/// <returns></returns>
private void Timer()
{
guiTimer.text = StringHelper.GetCountDownStr((int)countTime);
if (countTime < limitTime)
{
countTime += Time.deltaTime;
guiTimer.text = "考试时间:"+StringHelper.GetCountDownStr((int)countTime);
}
else
{
//Debug.Log("计时结束");
timeOver?.Invoke();
isRun = false;
}
}
IEnumerator LoadJSON(string fileName)
{
string sPath = fileName;
using (UnityWebRequest oReq = UnityWebRequest.Get(sPath))
{
yield return oReq.SendWebRequest();
if (!string.IsNullOrEmpty(oReq.error))
{
Debug.Log("获取配置信息失败!");
yield break;
}
string json = oReq.downloadHandler.text;
TimerSer settings = JsonConvert.DeserializeObject<TimerSer>(json);
limitTime = settings.Timer;
//Debug.Log(limitTime);
}
}
}
public class TimerSer
{
public float Timer;
}