CodeBlanks Logo Icon CodeBlanks

Async yükleme

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

Player.cs
using System;

class Program
{
    static void Main()
    {
        // operation ve progress değerlerini tanımlayıp yazdır
    }
}

Örnek çözüm

Player.cs
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

Soru
AsyncOperation operation = SceneManager.____("Level2");
Cevap
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

Orta seviye bölümündeki tüm dersler