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.
Görev
KolayHer hedefin bir sonraki seviyeyi açmasını sağla.
Start()içinde,"Level " + level + " of " + levelsifadesinilevelTextiçinde göster:leveletkin sahneninbuildIndexdeğeridir,levelsiseSceneManager.sceneCountInBuildSettings - 1değeridir.OnTriggerEnteriçinde, Player içinbuildIndex + 1sahnesini yükle; bu değersceneCountInBuildSettingsdeğerinden küçük değilse0değ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
1Ekrandaki Metinler
Canvas ve MetinSkoru GösterSayıları BiçimlendirGeri Sayım ZamanlayıcısıTekrar: Hız Göstergesi4Sahneler ve Bölümler
Bir Sahne YüklemeBölümü Yeniden BaşlatmaSonraki BölümSahneler Arasında SaklamaTekrar: Bölüm Seçimi2Düğmeler ve Ekranlar
Düğmeler ve onClickLambda İfadeleriInspector'da Bağlantı KurmaPanelleri Açma ve KapamaCan ÇubuklarıTekrar: Yükseltme Mağazası5PlayerPrefs ile Kaydetme
Bir Sayı KaydetmeVarsayılan Değerle YüklemeEn Yüksek SkorAyarları KaydetmeTekrar: Bankadaki ParalarKendi başına pratik yap: Unity playground