Level Berikutnya
Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 19 dari 60.
Setiap scene dalam daftar scene build memiliki nomor, yaitu build index: 0 untuk scene pertama, 1 untuk scene berikutnya, dan seterusnya. LoadScene menerima nomor itu selain nama, dan SceneManager.sceneCountInBuildSettings menunjukkan jumlah scene dalam daftar. Karena level tersusun berurutan dalam daftar, level berikutnya memiliki indeks sebesar indeks scene aktif ditambah 1. Pintu keluar ini memuatnya, lalu berhenti setelah level terakhir:
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!");
}
}Dengan empat scene, indeksnya adalah 0 sampai 3 dan sceneCountInBuildSettings bernilai 4, jadi di level terakhir nilai next adalah 4, satu angka setelah indeks terakhir. Karena itu, pengujiannya adalah next < sceneCountInBuildSettings: LoadScene(4) tidak akan memuat apa pun dan akan mencatat error Unity Cannot load scene: Invalid scene name (empty string) and invalid build index 4.
Sekarang, satu skrip pintu keluar dapat digunakan untuk setiap level, dan tidak ada satu pun yang menyebutkan nama scene. Untuk menambahkan level, tambahkan scene-nya ke daftar; untuk mengubah urutannya, seret scene ke posisi yang diinginkan dalam daftar.
Tantangan
MudahBuat setiap tujuan membuka level berikutnya.
- Di
Start(), tampilkan"Level " + level + " of " + levelsdilevelText:leveladalahbuildIndexscene aktif, sedangkanlevelsadalahSceneManager.sceneCountInBuildSettings - 1. - Di
OnTriggerEnter, untuk Player, muatbuildIndex + 1, atau0(menu) jika nilainya tidak lebih kecil darisceneCountInBuildSettings.
Tekan tombol “Main” dan selesaikan ketiga level: menu akan muncul kembali. Lalu tekan tombol “Periksa”.
Coba sendiri
using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;
public class Goal : MonoBehaviour
{
public TMP_Text levelText;
void Start()
{
// tampilkan "Level 2 of 3": nomor level ini dan jumlah level yang ada
}
void OnTriggerEnter(Collider other)
{
// pemain mencapai tujuan: muat level berikutnya, atau menu setelah level terakhir
}
}
Semua pelajaran di Membangun Game Sungguhan
4Scene dan Level
Muat SceneMulai Ulang LevelLevel BerikutnyaPertahankan Antar-SceneRekap: Pilih Level2Tombol dan Layar
Tombol dan onClickLambdaMenghubungkan di InspectorPanel Aktif dan NonaktifBilah KesehatanRangkuman: Toko Upgrade5Menyimpan dengan PlayerPrefs
Simpan AngkaMuat dengan Nilai DefaultSkor TertinggiSimpan PengaturanUlasan: Koin di BankLatihan sendiri: Playground Unity