Level Berikutnya
Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 19 dari 56.
Setiap scene dalam daftar scene build memiliki nomor, yaitu indeks build: 0 untuk yang pertama, 1 untuk berikutnya, dan seterusnya. LoadScene menerima nomor itu selain nama, dan SceneManager.sceneCountInBuildSettings menyatakan jumlah scene dalam daftar. Karena level-level tersusun berurutan dalam daftar, indeks level berikutnya adalah 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 next bernilai 4, satu angka melewati indeks terakhir. Itulah sebabnya 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.
Satu skrip pintu keluar kini berlaku untuk setiap level, dan tidak ada skrip yang menyebutkan nama scene. Untuk menambahkan level, tambahkan scene-nya ke daftar; untuk mengubah urutannya, seret scene-scene di dalam daftar.
Tantangan
MudahBuild mencantumkan empat scene: Menu (indeks 0), lalu Level1, Level2, dan Level3. Tombol Play di Menu membuka Level1, dan tombol panah menggerakkan Player (keduanya sudah siap). Setiap level memiliki Goal berwarna emas dengan skrip Goal. Tulis skrip tanpa menyebut nama scene apa pun:
- Di Start, tampilkan nomor level ini dan jumlah level di
levelText, dengan formatLevel 2 of 3. Menu bukan level. - Saat Player (dengan tag
Player) mencapai goal, muat level berikutnya dalam daftar. Setelah level terakhir, kembali ke Menu.
Tekan Play, mainkan ketiga level sampai selesai, lalu tekan Check.
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 seluruh level
}
void OnTriggerEnter(Collider other)
{
// Pemain mencapai tujuan: muat level berikutnya, atau menu setelah level terakhir
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Membangun Game Sungguhan
4Scene dan Level
Muat SceneMulai Ulang LevelLevel BerikutnyaPertahankan Antar-SceneRekap: Pilih Level10Proyek: Platformer 3D
LintasanPlatform Bergerak2Tombol dan Layar
Tombol dan onClickLambdaMenghubungkan di InspectorPanel Aktif dan NonaktifBilah KesehatanRangkuman: Toko Upgrade5Menyimpan dengan PlayerPrefs
Simpan AngkaMuat dengan Nilai DefaultSkor TertinggiSimpan PengaturanUlasan: Koin di Bank