Hiển thị điểm 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 2 trên 60.
text của văn bản là một chuỗi, vì vậy phải chuyển số thành văn bản trước khi hiển thị. Nối số với một chuỗi bằng + sẽ làm việc đó: "Wood: " + wood cho ra Wood: 12 khi wood là 12, còn wood.ToString() cho ra 12. Riêng số nguyên không phù hợp: woodText.text = wood; gây lỗi CS0029, Không thể chuyển đổi ngầm định kiểu 'int' thành 'string'.
Số được lưu trong trường int, còn văn bản chỉ hiển thị số đó. Một phương thức cập nhật văn bản từ trường này; mỗi khi số thay đổi, phương thức sẽ được gọi. Start() cũng gọi phương thức, nhờ vậy khung hình đầu tiên hiển thị giá trị thực thay vì giá trị đã nhập trong Inspector. Ở đây, nhấn Space sẽ chặt 3 khúc gỗ:
public TMP_Text woodText;
private int wood;
void Start()
{
ShowWood();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
wood += 3;
ShowWood();
}
}
void ShowWood()
{
woodText.text = "Wood: " + wood;
}Văn bản chỉ thay đổi khi wood thay đổi. Cập nhật văn bản trong mỗi lần gọi Update() cũng cho kết quả tương tự, nhưng sẽ tạo chuỗi mới 60 lần mỗi giây mà chẳng cần thiết. Thứ tự rất quan trọng: nếu gọi ShowWood() trước wood += 3, số gỗ hiển thị sẽ là số cũ, chậm hơn một lần nhấn.
Thử thách
DễHiển thị số hạt giống và cây trên màn hình.
- Trong
Gardener.cs, viếtvoid ShowCounts()để đặtseedsText.textthành"Seeds: " + seedsvàtreesText.textthành"Trees: " + trees. - Gọi hàm này trong
Start()mới và trong câu lệnhiftrồng cây, sautrees++;.
Nhấn Chơi: dòng chữ hiển thị Seeds: 5 và Trees: 0, rồi thay đổi sau mỗi cây non. Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
using TMPro;
public class Gardener : MonoBehaviour
{
public float speed = 4f;
public int seeds = 10;
public GameObject saplingPrefab;
public TMP_Text seedsText;
public TMP_Text treesText;
private int trees;
void Update()
{
float move = Input.GetAxisRaw("Horizontal");
transform.Translate(move * speed * Time.deltaTime, 0f, 0f);
if (Input.GetKeyDown(KeyCode.Space) && seeds > 0)
{
Vector3 spot = new Vector3(transform.position.x, 0.5f, 1.5f);
Instantiate(saplingPrefab, spot, Quaternion.identity);
seeds--;
trees++;
}
}
// Hiển thị Seeds: và Trees: trong hai ô văn bản ngay từ khung hình đầu tiên
}
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