Prefab nedir? Prefab variant ve nested prefab ne işe yarar?
Cevap
Prefab, yapılandırılmış bir GameObject'in (bileşenleri, değerleri, çocuk nesneleriyle birlikte) yeniden kullanılabilir şablonudur. Sahnedeki her kopyası (instance) prefab'a bağlıdır; prefab değişince tüm kopyalar güncellenir.
[SerializeField] GameObject enemyPrefab;
void Spawn(Vector3 pos)
{
GameObject e = Instantiate(enemyPrefab, pos, Quaternion.identity);
}- Override: Bir instance üzerinde değer değiştirilirse sadece o kopya farklılaşır; diğer alanlar prefab'a bağlı kalır.
- Nested prefab: Bir prefab başka prefab'ları içerebilir (ör. bir araç prefab'ı içinde tekerlek prefab'ı). Tekerlek güncellenince tüm araçlar etkilenir.
- Prefab variant: Bir ana prefab'tan türeyen ve sadece farklılıklarını tutan prefab'tır. Ör.
EnemytemelindenFastEnemyveTankEnemytüretmek. Kalıtıma benzer.
Sık Instantiate / Destroy çağrısı GC ve performans maliyeti yaratır; mermi, efekt gibi sık oluşan nesneler için object pooling (Unity'de ObjectPool<T>) tercih edilir.
İlgili Unity & C# soruları
- Unity'de Update, FixedUpdate ve LateUpdate arasındaki fark nedir?
- GetComponent çağrılarını neden önbelleğe almalısınız?
- Rigidbody, physics layer'lar ve raycast nasıl çalışır? FixedUpdate neden önemlidir?
- C# delegate, event ve UnityEvent arasındaki farklar nelerdir?
- Unity'de garbage collection neden frame düşüşüne yol açar? Update içinde allocation'dan nasıl kaçınırsınız?
- C#'ta struct ile class arasındaki fark nedir? Value type ve reference type oyunda neden önemlidir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.