Hướng dẫn về đồng hồ đếm ngược cho Unity
đồng hồ đếm ngược là đồng hồ ảo đếm từ thời gian đã đặt cho đến 0.
Để tạo đồng hồ đếm ngược ở dạng Unity, bạn cần tạo một tập lệnh lưu trữ lượng thời gian sẽ được đếm ngược và hiển thị ở định dạng 00:00.
Bộ đếm thời gian sẽ có các định dạng sau:
- Ngày:Giờ:Phút:Giây:Mili giây
- Giờ:Phút:Giây:Mili giây
- Phút:Giây:Mili giây
- Giây:Mili giây
- Cộng với tất cả những điều trên nhưng không có mili giây
bước
Để tạo đồng hồ đếm ngược trong Unity, hãy làm theo các bước bên dưới:
- Tạo một tập lệnh mới, gọi nó là 'SC_CountdownTimer', xóa mọi thứ khỏi tập lệnh rồi dán mã bên dưới:
- Tập lệnh đồng hồ đếm ngược C# sẽ trừ tổng giá trị cho đến khi đạt 0 và sẽ áp dụng thời gian được định dạng cho thành phần Văn bản.
SC_CountdownTimer.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SC_CountdownTimer : MonoBehaviour
{
public enum CountdownFormatting { DaysHoursMinutesSeconds, HoursMinutesSeconds, MinutesSeconds, Seconds };
public CountdownFormatting countdownFormatting = CountdownFormatting.MinutesSeconds; //Controls the way the timer string will be formatted
public bool showMilliseconds = true; //Whether to show milliseconds in countdown formatting
public double countdownTime = 600; //Countdown time in seconds
Text countdownText;
double countdownInternal;
bool countdownOver = false;
// Start is called before the first frame update
void Start()
{
countdownText = GetComponent<Text>();
countdownInternal = countdownTime; //Initialize countdown
}
void FixedUpdate()
{
if (countdownInternal > 0)
{
countdownInternal -= Time.deltaTime;
//Clamp the timer value so it never goes below 0
if (countdownInternal < 0)
{
countdownInternal = 0;
}
countdownText.text = FormatTime(countdownInternal, countdownFormatting, showMilliseconds);
}
else
{
if (!countdownOver)
{
countdownOver = true;
Debug.Log("Countdown has finished running...");
//Your code here...
}
}
}
string FormatTime(double time, CountdownFormatting formatting, bool includeMilliseconds)
{
string timeText = "";
int intTime = (int)time;
int days = intTime / 86400;
int hoursTotal = intTime / 3600;
int hoursFormatted = hoursTotal % 24;
int minutesTotal = intTime / 60;
int minutesFormatted = minutesTotal % 60;
int secondsTotal = intTime;
int secondsFormatted = intTime % 60;
int milliseconds = (int)(time * 100);
milliseconds = milliseconds % 100;
if (includeMilliseconds)
{
if (formatting == CountdownFormatting.DaysHoursMinutesSeconds)
{
timeText = string.Format("{0:00}:{1:00}:{2:00}:{3:00}:{4:00}", days, hoursFormatted, minutesFormatted, secondsFormatted, milliseconds);
}
else if (formatting == CountdownFormatting.HoursMinutesSeconds)
{
timeText = string.Format("{0:00}:{1:00}:{2:00}:{3:00}", hoursTotal, minutesFormatted, secondsFormatted, milliseconds);
}
else if (formatting == CountdownFormatting.MinutesSeconds)
{
timeText = string.Format("{0:00}:{1:00}:{2:00}", minutesTotal, secondsFormatted, milliseconds);
}
else if (formatting == CountdownFormatting.Seconds)
{
timeText = string.Format("{0:00}:{1:00}", secondsTotal, milliseconds);
}
}
else
{
if (formatting == CountdownFormatting.DaysHoursMinutesSeconds)
{
timeText = string.Format("{0:00}:{1:00}:{2:00}:{3:00}", days, hoursFormatted, minutesFormatted, secondsFormatted);
}
else if (formatting == CountdownFormatting.HoursMinutesSeconds)
{
timeText = string.Format("{0:00}:{1:00}:{2:00}", hoursTotal, minutesFormatted, secondsFormatted);
}
else if (formatting == CountdownFormatting.MinutesSeconds)
{
timeText = string.Format("{0:00}:{1:00}", minutesTotal, secondsFormatted);
}
else if (formatting == CountdownFormatting.Seconds)
{
timeText = string.Format("{0:00}", secondsTotal);
}
}
return timeText;
}
}
- Tạo văn bản giao diện người dùng mới bằng cách nhấp chuột phải vào chế độ xem Thứ bậc -> Giao diện người dùng -> Văn bản và đặt tên cho nó 'Countdown'
- Thay đổi 'Countdown' Căn chỉnh Rect Transform thành trên cùng bên trái, xoay thành (0, 1), Pos X và Pos Y thành 5, Chiều rộng thành 300 và Chiều cao thành 60
- Thay đổi kiểu phông chữ 'Countdown' thành đậm, cỡ chữ thành 34, căn chỉnh sang giữa bên trái và màu thành màu trắng
- Đính kèm tập lệnh SC_CountdownTimer vào đối tượng 'Countdown' có thành phần Văn bản.
Bạn sẽ nhận thấy tập lệnh có một vài biến:
- Định dạng đếm ngược kiểm soát đơn vị thời gian nào sẽ được đưa vào định dạng chuỗi.
- Hiển thị các điều khiển Milliseconds nếu số mili giây sẽ được hiển thị.
- Countdown Time là khoảng thời gian đếm ngược tính bằng giây, ví dụ giá trị 600 tương ứng với 10 phút.
Sau khi nhấn Play bạn sẽ thấy văn bản được điền bằng đồng hồ đếm ngược:
Tại 0 giây, tập lệnh sẽ in một dòng trong bảng điều khiển, báo hiệu rằng quá trình đếm ngược đã kết thúc, hãy sử dụng phần tập lệnh đó để thêm chức năng của riêng bạn.