Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Buat setiap tujuan membuka level berikutnya.

  1. Di Start(), tampilkan "Level " + level + " of " + levels di levelText: level adalah buildIndex scene aktif, sedangkan levels adalah SceneManager.sceneCountInBuildSettings - 1.
  2. Di OnTriggerEnter, untuk Player, muat buildIndex + 1, atau 0 (menu) jika nilainya tidak lebih kecil dari sceneCountInBuildSettings.

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

Latihan sendiri: Playground Unity