Định dạng số
Thuộc phần Xây dựng trò chơi thực tế trong hành trình Unity của Coddy. Bài học 3 trên 60.
Khi ghép một số với chuỗi, kết quả sẽ hiển thị theo cách C# ghi số: bộ đếm thời gian hiển thị 12.34567, còn số thực có giá trị là 2 hiển thị 2, không có chữ số thập phân nào. Chuỗi định dạng trong ToString() sẽ quyết định cách hiển thị. Mỗi 0 trong chuỗi định dạng đại diện cho một chữ số luôn được ghi ra: 7.ToString("000") cho kết quả 007, còn 41.27f.ToString("0.0") cho kết quả 41.3, được làm tròn đến một chữ số thập phân. Trong phép nội suy chuỗi, bạn đặt cùng định dạng sau dấu hai chấm: $"{coins:000}", $"{topSpeed:0.0} m/s".
Thời gian sẽ dễ đọc hơn khi hiển thị bằng phút và giây. Trước tiên, ép kiểu thời gian sang int để bỏ phần thập phân; sau đó, phép chia số nguyên cho 60 cho biết số phút tròn, còn % 60 cho biết số giây còn lại. Một vòng đua dài 83.46 giây:
float lapTime = 83.46f;
int total = (int)lapTime; // 83
int minutes = total / 60; // 1
int seconds = total % 60; // 23
lapText.text = $"Lap: {minutes}:{seconds:00}"; // Lap: 1:2300 giữ hiển thị đủ hai chữ số: nếu không có nó, vòng đua dài 64 giây sẽ hiển thị là 1:4 thay vì 1:04. Và vì (int) bỏ phần thập phân thay vì làm tròn, 59.7 giây sẽ hiển thị là 0:59; nếu làm tròn, trong chốc lát nó sẽ hiển thị là 0:60.
Thử thách
DễĐịnh dạng ba con số của trò chơi arcade.
- Trong
Update(), trước tiên thêmint seconds = (int)playTime;. - Hiển thị điểm số bằng sáu chữ số,
Score: 000450, với{score:000000}, và hệ số combo với một chữ số thập phân,Combo: x2.5, với{combo:0.0}. - Hiển thị thời gian theo dạng
Time: 2:07:seconds / 60, dấu hai chấm, rồi đếnseconds % 60với hai chữ số.
Nhấn Chơi rồi nhấn Space: điểm số vẫn luôn có sáu chữ số. Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
using TMPro;
public class Scoreboard : MonoBehaviour
{
public TMP_Text scoreText;
public TMP_Text comboText;
public TMP_Text timeText;
public int score;
public float combo = 1f;
public float playTime;
void Update()
{
playTime += Time.deltaTime;
if (Input.GetKeyDown(KeyCode.Space))
{
score += (int)(100 * combo);
combo += 0.5f;
}
scoreText.text = "Score: " + score;
comboText.text = "Combo: x" + combo;
timeText.text = "Time: " + playTime;
}
}
Tất cả bài học trong Xây dựng trò chơi thực tế
1Văn bản trên màn hình
Canvas và văn bảnHiển thị điểm sốĐịnh dạng sốĐồng hồ đếm ngượcÔn tập: Đồng hồ tốc độ7Điều khiển thời gian
Tạm dừng bằng timeScaleChuyển động chậmThời gian không bị co giãnÔn tập: Bullet Time2Nút bấm và màn hình
Nút bấm và onClickLambdaKết nối trong InspectorBật và tắt bảngThanh máuÔn tập: Cửa hàng nâng cấp5Lưu dữ liệu với PlayerPrefs
Lưu một sốTải với giá trị mặc địnhĐiểm cao nhấtLưu cài đặtÔn tập: Tiền xu trong ngân hàngTự luyện tập: Playground Unity