Ôn tập: Trình quản lý vòng chơi
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 16 trên 60.
Chương này đã thêm vào trò chơi một trình quản lý: một singleton mà các thành phần khác có thể truy cập mà không cần trường, cùng các trạng thái mà nó chuyển đổi qua lại. Trình quản lý vòng chơi sử dụng cả hai.
Thử thách
DễHoàn thành trò chơi nhặt xu; SetState đã được viết.
- Thêm
public static RoundManager Instance;, gán giá trị trongAwake(). - Trong
Update(), dùng switch vớistate: trạng thái Ready chờ phím Space; trạng thái Playing đếm ngượctimeLeft, rồi chuyển sang Ready tiếp theo hoặc Finished sau vòng cuối. public bool TakeCoin(): chỉ khi đang ở trạng thái Playing, hãy đếm xu, hiển thịCoins: 2, rồi trả về true.Coin.cshủy đồng xu đã được tính khi Player chạm vào.
Nhấn Chơi để chơi cả ba vòng. Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
using TMPro;
public enum RoundState { Ready, Playing, Finished }
public class RoundManager : MonoBehaviour
{
// singleton: Instance tĩnh, được gán trong Awake()
public GameObject readyPanel;
public GameObject playPanel;
public GameObject finishedPanel;
public TMP_Text roundText;
public TMP_Text coinsText;
public TMP_Text finalText;
public int rounds = 3;
public float roundTime = 4f;
private RoundState state;
private int round = 1;
private int coins;
private float timeLeft;
void Start()
{
SetState(RoundState.Ready);
}
void Update()
{
// rẽ nhánh theo state: Ready chờ Space; Playing đếm ngược thời gian
}
void SetState(RoundState next)
{
state = next;
readyPanel.SetActive(next == RoundState.Ready);
playPanel.SetActive(next == RoundState.Playing);
finishedPanel.SetActive(next == RoundState.Finished);
if (next == RoundState.Ready) roundText.text = "Round " + round;
if (next == RoundState.Playing) timeLeft = roundTime;
if (next == RoundState.Finished) finalText.text = "Coins: " + coins;
}
// TakeCoin(): chỉ tính xu khi đang ở Playing
}
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi 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àng3Trình quản lý trò chơi
Một script chạy trò chơiSingletonCác trạng thái trò chơiChuyển đổi trạng tháiÔn tập: Trình quản lý vòng chơiTự luyện tập: Playground Unity