Örnek sorular
Un Prefabs Instantiate Pooling AddressablesZorluk 1
Unity'de Prefab asset ile sahnedeki Prefab instance arasındaki temel fark nedir?
- aPrefab asset yalnızca kodda vardır, instance yalnızca Editor'de vardır
- bPrefab instance orijinal dosyadır, asset geçici bir kopyadır
- cAsset saklanan şablondur; instance ise sahnedeki bağlı kopyasıdır✓
- dAralarında fark yoktur, Unity iki terimi birbirinin yerine kullanır
Açıklama:Prefab asset, Project klasöründe saklanan yeniden kullanılabilir şablondur; Prefab instance ise bu şablonun sahneye yerleştirilmiş kopyasıdır ve bağlantı bozulmadığı sürece asset'e bağlı kalır.
Un Prefabs Instantiate Pooling AddressablesZorluk 2
Sadece prefab referansı verilerek çağrılan Object.Instantiate(bulletPrefab) ne yapar?
- aYalnızca nesne için bellek ayırır ama henüz oluşturmaz
- bAktif sahnede yeni bir klon oluşturur ve döndürür✓
- cVar olan prefab asset'ini Project'ten kaldırıp sahneye taşır
- dKlonu oluşturur ama
SetActive(true) çağrılana kadar devre dışı bırakır
Açıklama:Object.Instantiate(original), verilen nesneyi klonlar ve klonu aktif sahneye, orijinalin konum/rotasyonu ve (Component olmayanlar için) enabled durumuyla yerleştirir; yeni klona bir referans döndürür.
Un Prefabs Instantiate Pooling AddressablesZorluk 2
Aşağıdaki Object.Instantiate aşırı yüklemelerinden hangisi yeni instance'ı doğrudan verilen bir parent Transform altına yerleştirir?
- a
Instantiate(original, parent)✓ - b
Instantiate(original, parent.gameObject) - c
Instantiate(original).SetParent(parent) — desteklenen tek yöntem budur - d
Instantiate(original, parent.name)
Açıklama:Unity, Instantiate(Object original, Transform parent) şeklinde belgelenmiş bir aşırı yükleme sunar; bu, yeni instance'ı oluşturma çağrısının kendisi içinde verilen Transform altına parent'lar.
Un Prefabs Instantiate Pooling AddressablesZorluk 2
Prefab'ın kendi transform değerlerini değiştirmeden, oluşturulan nesnenin world konumunu ve rotasyonunu doğrudan ayarlamak için hangi Object.Instantiate aşırı yüklemesi kullanılır?
- a
Instantiate(original, transform) - b
Instantiate(original) sonra yalnızca .transform.localPosition düzenlemek - cBöyle bir aşırı yükleme yoktur, konum her zaman instantiate sonrası ayarlanmalıdır
- d
Instantiate(original, position, rotation)✓
Açıklama:Instantiate(Object original, Vector3 position, Quaternion rotation), klonu tek çağrıda doğrudan verilen world konum ve rotasyonda oluşturur; prefab'ın kendi transform değerlerinin üzerine yazar.
Un Prefabs Instantiate Pooling AddressablesZorluk 3
Object.Instantiate bir prefab'dan yeni bir GameObject oluşturduğunda, çağrının yapıldığı karede hangi yaşam döngüsü metodu/metotları hemen çalışır?
- aYalnızca
Start çalışır, çünkü Awake prefab asset import edilirken zaten bir kez çağrılmıştır - b
Awake ve OnEnable hemen çalışır; Start bir sonraki Update'ten hemen öncesine ertelenir✓ - cÖnce
Update bir kez hemen çalışır, sonra Awake ve Start bir sonraki karede çalışır - dNesne
SetActive(true) ile manuel etkinleştirilene kadar hiçbir şey çalışmaz
Açıklama:Instantiate, çağrının bir parçası olarak Awake'i ve aktif bir nesne için OnEnable'ı eşzamanlı çalıştırır. Start henüz çağrılmaz — nesnenin ilk Update'inden hemen önce çalışır, bu da kare ortasında oluşturulan nesneler için genelde bir sonraki karedir.
Un Prefabs Instantiate Pooling AddressablesZorluk 1
Destroy(gameObject) çağırmak o GameObject'e ne yapar?
- aGameObject'i silinmek üzere işaretler, anında silmez✓
- bGameObject'i kalıcı olarak devre dışı bırakır ama bellekte sonsuza dek tutar
- cGameObject'in belleğini, çağrıdan sonraki satır çalışmadan hemen önce serbest bırakır
- dYalnızca Component'lerde çalışır, GameObject'in tamamında hiçbir zaman çalışmaz
Açıklama:Destroy, nesneyi anında değil, kaldırılmak üzere zamanlayarak işaretler; nesne ve component'leri aynı kare içinde, Update'ten sonra ama render'dan önce gerçekten yok edilir.