Unity'de Addressables nedir? Resources klasörüne göre avantajları nelerdir?

Cevap

Addressables, asset'leri bir adres (string key veya label) ile asenkron yükleyip bellekten bırakmayı sağlayan, AssetBundle'ların üzerine kurulu bir asset yönetim sistemidir. Asset'ler yerel olarak veya bir CDN'den uzaktan (remote) yüklenebilir.

ResourcesAddressables
YüklemeSenkron ağırlıklıAsenkron
Build'e etkisiKlasördeki her şey build'e girer, başlangıç süresini uzatırGruplar halinde paketlenir
Bellek yönetimiUnload zorReferans sayımıyla Release
Uzaktan içerik / DLCYokVar (content update)
Bağımlılık takibiYokOtomatik
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;

public class EnemySpawner : MonoBehaviour
{
    [SerializeField] AssetReferenceGameObject enemyRef;
    AsyncOperationHandle<GameObject> handle;

    async void Start()
    {
        handle = Addressables.InstantiateAsync(enemyRef, transform.position, Quaternion.identity);
        GameObject enemy = await handle.Task;
    }

    void OnDestroy()
    {
        if (handle.IsValid()) Addressables.ReleaseInstance(handle);
    }
}

Dikkat edilecekler:

  • Her Load için bir Release olmalıdır; aksi halde bellek sızıntısı olur. Addressables Event Viewer / Profiler modülü ile takip edilir.
  • Gruplama stratejisi önemlidir: birlikte kullanılan asset'ler aynı grupta olmalı; aksi halde tek bir asset için koca bundle yüklenir.
  • Aynı asset'in birden fazla bundle'a kopyalanmasını (duplicate dependency) Analyze aracıyla kontrol edin.

Unity'nin resmi önerisi de Resources klasörünü prototipler dışında kullanmamaktır.

  1. Unity'de Update, FixedUpdate ve LateUpdate arasındaki fark nedir?KolayUnity & C#Game Dev
  2. GetComponent çağrılarını neden önbelleğe almalısınız?KolayUnity & C#Game Dev
  3. Rigidbody, physics layer'lar ve raycast nasıl çalışır? FixedUpdate neden önemlidir?OrtaUnity & C#Game Dev
  4. C# delegate, event ve UnityEvent arasındaki farklar nelerdir?OrtaUnity & C#Game Dev
  5. Unity'de garbage collection neden frame düşüşüne yol açar? Update içinde allocation'dan nasıl kaçınırsınız?ZorUnity & C#Game Dev
  6. C#'ta struct ile class arasındaki fark nedir? Value type ve reference type oyunda neden önemlidir?OrtaUnity & C#Game Dev

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle