可能倒計時的功能太簡單了,沒有找到關於倒計時的博客參考,所以本人自己寫了倒計時的功能,希望能幫助做Unity的小伙伴們繞過一些坑。
實現效果如下:
Hierarchy 面板層級關系:
將C#腳本掛載到“Text_CounDown”上運行,即可實現如圖所示功能。
C#腳本如下:
using UnityEngine; using UnityEngine.UI; public class UserSystem : MonoBehaviour { // 用於現實倒計時的 UI 組件 private Text counDown; // 用於積累時間(累加 Time.deltaTime) private float timeFloat; // 需要倒計時多長時間(以 分 為單位) [Range(0f, 10f)]if (minInt == 0) secondInt = (int)(min * 60);
public float min = 5.05f; // 用於顯示倒計時的分鍾數 private int minInt; // 用於顯示倒計時的秒數 private int secondInt; private void Start() { // 得到用於現實倒計時的 UI 組件 counDown = transform.Find("Text_CountDown").GetComponent<Text>(); // 賦值分鍾數 minInt = (int)min; // 賦值秒數(分鍾數為 0 時需要判斷,否則除數為 0 會報錯)
else secondInt = (int)((min % minInt) * 60);
// 賦值倒計時秒數的初始值 timeFloat = 60 - secondInt; } private void Update() {
// 倒計時秒數降到 0 以下時,分鍾數下降 1
if(60 - timeFloat < 0)
{
// 更新秒數
timeFloat -= 60f; // 分鍾數下降 1 minInt--; // 當倒計時為 0 時,調用一個方法 或 切換場景 if (minInt < 0) { // TODO } }
// 累加時間(將倒計時的誤差降到最低) timeFloat += Time.deltaTime; // 更新 秒數 secondInt = (int)(60 - timeFloat); counDown.text = minInt.ToString("00") + ":" + secondInt.ToString("00"); } }