Sonraki Bölüm
Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 19 / 56.
Derlemenin sahne listesindeki her sahnenin bir numarası vardır; bu, derleme dizini olarak adlandırılır: ilk sahne için 0, sonraki için 1 ve böyle devam eder. LoadScene hem bu numarayı hem de bir adı alır; SceneManager.sceneCountInBuildSettings ise listede kaç sahne olduğunu belirtir. Seviyeler listede sıralı olduğunda, sonraki seviye etkin sahnenin dizini + 1 olur. 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 dizinler 0 ile 3 arasındadır ve sceneCountInBuildSettings değeri 4'tür; dolayısıyla son seviyede next değeri 4 olur ve listenin bir sonrasını gösterir. 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 kaydeder.
Artık her seviyede aynı çıkış betiği kullanılır ve bunların hiçbiri bir sahne adı 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
KolayBuild listesinde dört sahne var: Menu (indeks 0), ardından Level1, Level2 ve Level3. Menu'deki Play düğmesi Level1'i açar ve ok tuşları Player'ı hareket ettirir (ikisi de hazır). Her seviyede Goal betiğine sahip altın bir Goal bulunur. Hiçbir sahnenin adını belirtmeden yaz:
- Start içinde, bu seviyenin numarasını ve seviye sayısını
levelTextiçindeLevel 2 of 3biçiminde göster. Menu bir seviye değildir. - Player (etiketi
Playerolan) hedefe ulaştığında listedeki sonraki seviyeyi yükle. Son seviyeden sonra Menu'ye dön.
Play düğmesine bas, üç seviyenin tamamını oyna, ardından Check 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" metnini göster: bu seviyenin numarasını ve toplam seviye sayısını
}
void OnTriggerEnter(Collider other)
{
// oyuncu hedefe ulaştı: sonraki seviyeyi, son seviyeden sonra ise menüyü yükle
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
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çimi10Proje: 3D Platform Oyunu
ParkurHareketli Platformlar2Düğ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 Paralar