Điểm số
Bài học 11 trên 14 trong khóa học Game Unity: rắn 3D của Coddy.
Điểm số tăng trong GameManager, nhưng không ai nhìn thấy. Một văn bản TextMeshPro ở góc trên bên trái hiển thị điểm số: một trường TMP_Text được thiết lập trong Inspector, và thuộc tính text được ghi bằng code.
Hãy ghi văn bản ở cùng chỗ số điểm thay đổi, sau khi thay đổi. Như vậy, màn hình luôn hiển thị điểm số mới nhất. Một cửa hàng cập nhật số xu theo cách tương tự:
public void Buy(int price)
{
coins -= price;
coinsText.text = "Coins: " + coins;
}Hãy thiết lập văn bản một lần trong Start() nữa, để khung hình đầu tiên hiển thị điểm số thực, bất kể văn bản trong cảnh ghi gì.
Thử thách
Trung bìnhHiển thị điểm số trên màn hình.
- Trong
GameManager, thêmusing TMPro;vàpublic TMP_Text scoreText;(cảnh sẽ liên kết ScoreText). - Trong
Start(), hiển thịScore: 0. - Trong
Eat(), sau khi cộng điểm, hiển thị"Score: " + score.
Nhấn Chơi và ăn thức ăn: góc trên bên trái sẽ hiển thị Score: 1, Score: 2. Sau đó nhấn Kiểm tra.
Tự làm thử
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
public Snake snake;
public GameObject foodPrefab;
private Transform food;
private int score;
void Awake()
{
Instance = this;
}
void Start()
{
food = Instantiate(foodPrefab).transform;
MoveFood();
}
public bool IsFood(Vector3 cell)
{
return cell == food.position;
}
public void Eat()
{
score++;
MoveFood();
}
void MoveFood()
{
List<Vector3> free = new List<Vector3>();
for (int x = -snake.edge; x <= snake.edge; x++)
{
for (int z = -snake.edge; z <= snake.edge; z++)
{
Vector3 cell = new Vector3(x, 0f, z);
if (!snake.Occupies(cell))
{
free.Add(cell);
}
}
}
food.position = free[Random.Range(0, free.Count)];
}
}
Tất cả bài học trong Game Unity: rắn 3D
Tự luyện tập: Playground Unity