Async yükleme
- Oyun Geliştirme kursu
- Orta seviye
- Ders 59/83
- 4 dk
LoadSceneAsync ile sahne yüklerken ekran göstermeyi öğrenirsin.
Asenkron Sahne Yükleme (LoadSceneAsync)
Büyük boyutlu sahneler yüklenirken senkron LoadScene metodu oyunun birkaç saniye donmasına (freeze) yol açabilir. SceneManager.LoadSceneAsync() metodu ise yükleme işlemini arka planda asenkron olarak yürütür.
using UnityEngine.SceneManagement;
// Arka planda donmasız asenkron yükleme
AsyncOperation op = SceneManager.LoadSceneAsync("LargeLevel");Bu sayede oyun donmaz; arka planda sahne okunurken ekranda hareketli bir yükleme ekranı (loading screen) gösterilebilir.
AsyncOperation ve İlerleme Çubuğu
LoadSceneAsync metodu bir AsyncOperation nesnesi döndürür. Bu nesnenin operation.progress değeri (0.0 ile 1.0 arası) bir coroutine döngüsünde okunarak UI yükleme çubuğunun doluluk oranına (fillAmount) bağlanır.
IEnumerator LoadWithProgress(string sceneName) {
AsyncOperation op = SceneManager.LoadSceneAsync(sceneName);
while (!op.isDone) {
float progress = op.progress;
yield return null;
}
}Böylece oyuncuya yükleme sürecinin ne kadarının tamamlandığı görsel olarak hissettirilir.
Uygulama Asenkron işlem ve ilerleme bilgisini yazdır
operation değişkenine "LoadSceneAsync", progress değişkenine "100%" ata. Ekrana Operation: LoadSceneAsync | Progress: 100% yazdır.
Başlangıç kodu
using System;
class Program
{
static void Main()
{
// operation ve progress değerlerini tanımlayıp yazdır
}
}Örnek çözüm
using System;
class Program
{
static void Main()
{
string operation = "LoadSceneAsync";
string progress = "100%";
Console.WriteLine("Operation: " + operation + " | Progress: " + progress);
}
}Beklenen çıktı
Operation: LoadSceneAsync | Progress: 100%
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Büyük sahneler yüklenirken oyunun donmasını (freeze) engelleyip arka planda yükleme yapmak için hangi metot kullanılır?
- SceneManager.LoadSceneAsync() Doğru cevap
- SceneManager.FastLoad()
- SceneManager.ThreadRun()
- SceneManager.LoadSceneBlocking()
Açıklama: LoadSceneAsync, sahneyi arka plan iş parçacığında asenkron yükleyerek ana ekranın akıcı kalmasını sağlar.
2 Asenkron sahne yükleme çağrısı yap
AsyncOperation operation = SceneManager.____("Level2");
AsyncOperation operation = SceneManager.LoadSceneAsync("Level2");
Açıklama: Bir sahneyi asenkron olarak arka planda yüklemek için LoadSceneAsync metodu kullanılır.
3 Asenkron yükleme kavramları
| Kavram | Anlamı |
|---|---|
LoadSceneAsync |
Arka planda donmasız yükleyen metot |
AsyncOperation |
Asenkron işlemin durumunu tutan sınıf |
operation.progress |
Yükleme ilerleme oranı (0.0-1.0) |
Loading Screen |
Yükleme ilerlemesini gösteren ara ekran |