Tải cảnh
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 17 trên 60.
Một trò chơi Unity được chia thành các cảnh: menu, từng màn chơi và phần giới thiệu nhóm phát triển. Mỗi cảnh là một tệp riêng, có các đối tượng riêng, và một tập lệnh chuyển sang cảnh khác bằng SceneManager.LoadScene, thuộc không gian tên UnityEngine.SceneManagement. Nút Chơi của menu này được kết nối trong Inspector và mở màn chơi Forest:
using UnityEngine;
using UnityEngine.SceneManagement;
public class MainMenu : MonoBehaviour
{
public void Play()
{
SceneManager.LoadScene("Forest");
}
}Unity chỉ có thể tải những cảnh nằm trong danh sách cảnh của bản dựng: trong Unity 6, danh sách này nằm ở File > Build Profiles, trong mục Scene List (các phiên bản cũ gọi cửa sổ này là Build Settings). Tên cảnh phải trùng khớp chính xác với tên tệp cảnh. Nếu thiếu cảnh trong danh sách hoặc tên bị gõ sai, chẳng hạn "Forrest", cảnh sẽ không tải và Console hiển thị lỗi bắt đầu bằng Scene 'Forrest' couldn't be loaded, cho biết cảnh chưa được thêm vào bản dựng; trò chơi vẫn ở menu.
Việc chuyển cảnh không diễn ra ngay lập tức. Phần còn lại của khung hình hiện tại chạy trước, nên các dòng sau LoadScene vẫn thực thi; ở đầu khung hình tiếp theo, Unity hủy mọi đối tượng của cảnh cũ rồi tạo cảnh mới, nơi các tập lệnh khởi chạy lại với Awake và Start.
Thử thách
DễHãy để mỗi cổng tải cảnh mà sceneName chỉ định.
- Ở đầu
Portal.cs, thêmusing UnityEngine.SceneManagement;. - Viết
void OnTriggerEnter(Collider other): khiother.CompareTag("Player"), gọiSceneManager.LoadScene(sceneName);.
Nhấn Chơi rồi đi vào từng cổng: Desert, Hub và Glacier lần lượt được tải. Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
public class Portal : MonoBehaviour
{
public string sceneName;
// Khi người chơi bước vào, tải cảnh có tên sceneName
}
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