86 lines
2.1 KiB
C#
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;
|
|
|
|
}
|
|
}
|