Màn tiếp theo
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 19 trên 60.
Mỗi cảnh trong danh sách cảnh của bản dựng có một số, gọi là chỉ số bản dựng: 0 cho cảnh đầu tiên, 1 cho cảnh tiếp theo, và cứ thế tiếp tục. LoadScene nhận số đó cùng với một tên, còn SceneManager.sceneCountInBuildSettings cho biết danh sách có bao nhiêu cảnh. Khi các màn chơi được sắp theo thứ tự trong danh sách, màn tiếp theo có chỉ số bằng chỉ số của cảnh đang hoạt động cộng 1. Cổng thoát này tải màn đó, rồi dừng lại sau màn cuối cùng:
void OnTriggerEnter(Collider other)
{
if (!other.CompareTag("Player")) return;
int next = SceneManager.GetActiveScene().buildIndex + 1;
if (next < SceneManager.sceneCountInBuildSettings)
{
SceneManager.LoadScene(next);
}
else
{
Debug.Log("You finished the game!");
}
}Với bốn cảnh, các chỉ số là từ 0 đến 3 và sceneCountInBuildSettings là 4, vì vậy ở màn cuối cùng, next là 4, vượt quá chỉ số cuối cùng một đơn vị. Đó là lý do điều kiện kiểm tra là next < sceneCountInBuildSettings: LoadScene(4) sẽ không tải cảnh nào và ghi lại lỗi của Unity Cannot load scene: Invalid scene name (empty string) and invalid build index 4.
Giờ đây, một script cổng thoát dùng được cho mọi màn chơi và không màn nào cần nêu tên cảnh. Để thêm màn chơi, bạn thêm cảnh đó vào danh sách; để đổi thứ tự, bạn kéo các cảnh đến vị trí khác trong danh sách.
Thử thách
DễĐể mỗi mục tiêu mở màn tiếp theo.
- Trong
Start(), hiển thị"Level " + level + " of " + levelstronglevelText:levellàbuildIndexcủa cảnh đang hoạt động,levelslàSceneManager.sceneCountInBuildSettings - 1. - Trong
OnTriggerEnter, khi gặp Player, tảibuildIndex + 1, hoặc0(menu) nếu giá trị đó không nhỏ hơnsceneCountInBuildSettings.
Nhấn Chơi và hoàn thành cả ba màn: menu sẽ xuất hiện lại. Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;
public class Goal : MonoBehaviour
{
public TMP_Text levelText;
void Start()
{
// Hiển thị "Level 2 of 3": số thứ tự của màn chơi này và tổng số màn chơi
}
void OnTriggerEnter(Collider other)
{
// Người chơi đã đến đích: tải màn chơi tiếp theo, hoặc tải menu nếu đây là màn chơi cuối
}
}
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