E_ElecCompetition/Electrical_inspectionCompet.../Assets/Script/Timers.cs

86 lines
2.1 KiB
C#

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Timers : MonoBehaviour
{
// 定义计时器的一些属性和变量
bool run = false; // 是否运行计时器
bool showTimeLeft = true; // 是否显示剩余时间
bool timeEnd = false; // 倒计时是否结束
float startTime = 0.0f; // 计时器开始的时间
float curTime = 0.0f; // 当前时间
string curStrTime = string.Empty; // 用于显示的时间字符串
bool pause = false; // 是否暂停计时器
public float timeAvailable = 30f; // 可用时间,单位为秒
float showTime = 0; // 剩余时间
public Text guiTimer; // 用于显示计时器的 Text 组件
// Start 方法在脚本激活时运行,用于初始化计时器
void Start()
{
RunTimer();
}
// 运行计时器
public void RunTimer()
{
run = true;
startTime = Time.time;
}
// 暂停或恢复计时器
public void PauseTimer(bool b)
{
pause = b;
}
// 结束计时器
public void EndTimer()
{
// Do nothing
}
// Update 方法在每一帧运行,用于更新计时器的状态和显示
void Update()
{
// 如果计时器被暂停,更新 startTime 并返回
if (pause)
{
startTime = startTime + Time.deltaTime;
return;
}
// 如果计时器正在运行,计算当前时间和已经流逝的时间
if (run)
{
curTime = Time.time - startTime;
}
// 如果需要显示剩余时间,计算剩余时间并检查倒计时是否结束
if (showTimeLeft)
{
showTime = timeAvailable - curTime;
if (showTime <= 0)
{
timeEnd = true;
showTime = 0;
}
}
// 将剩余时间格式化为字符串,更新计时器的显示
int minutes = (int)(showTime / 60);
int seconds = (int)(showTime % 60);
int fraction = (int)((showTime * 100) % 100);
curStrTime = string.Format("{0:00}:{1:00}:{2:00}", minutes, seconds, fraction);
guiTimer.text = "考试时间: " + curStrTime;
}
}