using UnityEngine; using System.Collections; using UnityEngine.UI; public class Timer : 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; } }