Unity製作倒計時功能:液晶顯示屏文字變化及顯示

一、功能描述:
實現簡單的倒計時功能
二、使用方法
1.新建UI,結構如下圖所示:
在這裏插入圖片描述
2.將下面的Timer腳本掛在“倒計時”物體上面
3.效果圖如下:
在這裏插入圖片描述


/*******************************************************************************
* 版權聲明:保留所有版權
* 版本聲明:v1.0.0
* 類 名 稱: Timer
* 創建日期:2019-10-15 12:00:30
* 作者名稱:王靜
* CLR 版本:4.0.30319.42000
* 修改記錄:
* 描述:數字屏計時器及顯示
******************************************************************************/
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
namespace Com.Rainier.WangJing
{
    public class Timer : MonoBehaviour
    {
        public static Timer Instance;
        /// <summary>
        /// 顯示時間
        /// </summary>
        public Text showTime;
        /// <summary>
        /// 是否開始計時
        /// </summary>
        public bool isStart = false;
        /// <summary>
        /// 設置的時間
        /// </summary>
        public int setTime = 1200;
        void Start()
        {
            showTime.text = "00:00";
            StartCoroutine(StartCounting(0.1F));
        }           
        /// <summary>
        ///開始計時
        /// </summary>
        /// <param name="setValue"></param>
        public IEnumerator StartCounting(float speed)
        {
            int setValue = setTime;
            while (setValue > 0)
            {
                setValue--;            
                int r = setValue / 1000;    //顯示屏十位
                int g = setValue / 100 % 10;//顯示屏個位
                int b = setValue / 10 % 10;//顯示屏小數點後一位
                int a = setValue % 10;    //顯示屏小數點後兩位
                string rr = showTime.text.ToString().Substring(0, 1);
                string gg = showTime.text.ToString().Substring(1, 1);
                string bb = showTime.text.ToString().Substring(3, 1);
                string aa = showTime.text.ToString().Substring(4, 1);
                rr = r.ToString();
                gg = g.ToString();
                bb = b.ToString();
                aa = a.ToString();
                showTime.text = rr + gg + ":" + bb + aa;
                if (setValue == 0)
                {
                    isStart = false;
                    Debug.Log("等待結束!請開始下一步");                  
                    gameObject.SetActive(false);                   
                }
                yield return new WaitForSeconds(speed);
            }                               
        }
    }
}


寫的比較簡單,有更好的寫法的話歡迎留言

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章