Kết thúc đêm
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 60 trên 60.
Thử thách cuối cùng hoàn thiện toàn bộ trò chơi: một trình quản lý có các trạng thái, chức năng tạm dừng để dừng thời gian, hai kết thúc và chức năng khởi động lại để đưa tỷ lệ thời gian về mức ban đầu.
Thử thách
KhóThêm chức năng tạm dừng, hai kết thúc và khởi động lại.
pauseButtonchỉ chuyển giữa Playing và Paused: Paused đặtTime.timeScalethành 0 và hiển thịpausePanel, Playing hoàn tác cả hai.- Khi còn 0 giây, đêm kết thúc với trạng thái Won. Khi Won hoặc Lost: time scale bằng 0,
endPanelhiển thịYou survived the night!hoặcThe bats got youtrongendText. restartButtonđặt time scale thành 1 và tải lại cảnh.
Nhấn Chơi, tạm dừng, thua rồi chơi lại. Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using TMPro;
public class GameManager : MonoBehaviour
{
public enum State { Playing, Paused, Won, Lost }
public static GameManager Instance;
public float nightLength = 15f;
public float spawnEvery = 2f;
public GameObject batPrefab;
public Transform[] spawnPoints;
public TMP_Text dawnText;
public Button pauseButton;
public GameObject pausePanel;
public GameObject endPanel;
public TMP_Text endText;
public Button restartButton;
public State state;
private float timeLeft;
private float spawnTimer;
void Awake()
{
Instance = this;
}
void Start()
{
state = State.Playing;
timeLeft = nightLength;
ShowDawn();
}
void Update()
{
if (state != State.Playing) return;
timeLeft -= Time.deltaTime;
spawnTimer += Time.deltaTime;
if (spawnTimer >= spawnEvery)
{
spawnTimer -= spawnEvery;
Transform point = spawnPoints[Random.Range(0, spawnPoints.Length)];
Instantiate(batPrefab, point.position, Quaternion.identity);
}
ShowDawn();
}
public void Lose()
{
if (state != State.Playing) return;
state = State.Lost;
}
void ShowDawn()
{
dawnText.text = "Dawn in " + Mathf.CeilToInt(timeLeft);
}
}
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àngTự luyện tập: Playground Unity