Menu
CoddyTech

Sonraki Bölüm

Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 19 / 60.

Derlemenin sahne listesindeki her sahnenin bir numarası vardır; buna build indeksi denir: ilk sahne için 0, sonraki için 1 ve böyle devam eder. LoadScene bu numarayı bir adın yanı sıra alır ve SceneManager.sceneCountInBuildSettings listede kaç sahne olduğunu belirtir. Seviyeler listede sırayla yer aldığında, sonraki seviye etkin sahnenin indeksine 1 eklenerek bulunur. Bu çıkış sonraki seviyeyi yükler ve son seviyeden sonra durur:

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!");
    }
}

Dört sahne olduğunda indeksler 0 ile 3 arasındadır ve sceneCountInBuildSettings değeri 4'tür; bu nedenle son seviyede next değeri 4 olur ve bu, listenin sonrasındaki ilk değerdir. Testin next < sceneCountInBuildSettings olmasının nedeni budur: LoadScene(4) hiçbir şey yüklemez ve Unity'nin Cannot load scene: Invalid scene name (empty string) and invalid build index 4 hatasını günlüğe yazar.

Artık her seviyede aynı çıkış betiği kullanılır ve bunların hiçbiri bir sahnenin adını belirtmez. Bir seviye eklemek için sahnesini listeye eklersin; sırayı değiştirmek için sahneleri listede sürükleyip bırakırsın.

challenge icon

Görev

Kolay

Her hedefin bir sonraki seviyeyi açmasını sağla.

  1. Start() içinde, "Level " + level + " of " + levels ifadesini levelText içinde göster: level etkin sahnenin buildIndex değeridir, levels ise SceneManager.sceneCountInBuildSettings - 1 değeridir.
  2. OnTriggerEnter içinde, Player için buildIndex + 1 sahnesini yükle; bu değer sceneCountInBuildSettings değerinden küçük değilse 0 değerini (Menü) yükle.

“Oyna” düğmesine bas ve üç seviyeyi de tamamla: Menü yeniden görünür. Ardından “Kontrol et” düğmesine bas.

Kendin dene

using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;

public class Goal : MonoBehaviour
{
    public TMP_Text levelText;

    void Start()
    {
        // "Level 2 of 3" ifadesini göster: bu seviyenin numarasını ve toplam kaç seviye olduğunu belirt
    }

    void OnTriggerEnter(Collider other)
    {
        // oyuncu hedefe ulaştı: sonraki seviyeyi, son seviyeden sonra ise menüyü yükle
    }
}

Gerçek Oyunlar Geliştirmek bölümündeki tüm dersler

Kendi başına pratik yap: Unity playground