Örnek sorular
Ue Uobject Reflection GcZorluk 1
Unreal Engine'de bir C++ sınıf tanımının üzerine konan UCLASS() makrosunun temel amacı nedir?
- aSınıfı yalnızca header içinde derlenen bir template olarak derlenmeye zorlar.
- bSınıfı Unreal'in reflection sistemine kaydeder.✓
- cSınıfı render thread için thread-safe olarak işaretler.
- dSınıfın metotları için C++ virtual dispatch'ini devre dışı bırakır.
Açıklama:UCLASS(), Unreal Header Tool'a sınıf için reflection verisi üretmesini söyler; bu da sınıfı serialization, garbage collection ve editör gibi sistemlere görünür kılan şeydir.
Ue Uobject Reflection GcZorluk 1
UCLASS olarak tanımlanmış bir C++ sınıfının içinde GENERATED_BODY() makrosu nereye yerleştirilmelidir?
- aSon public üye fonksiyondan sonra herhangi bir yere.
- bYalnızca bir
.cpp dosyasının içine, asla header'a değil. - cSınıfın virtual destructor'ından hemen sonra.
- dSınıf gövdesinin en ilk satırı olarak.✓
Açıklama:GENERATED_BODY() sınıf gövdesinin ilk satırı olmalıdır; Unreal Header Tool, üretilen reflection kodunu doğru şekilde eklemek için onu orada bekler.
Ue Uobject Reflection GcZorluk 2
USTRUCT() ile tanımlanan bir tip ile UCLASS() ile tanımlanan bir tip arasındaki temel fark nedir?
- aBir
USTRUCT() tipinin UObject'ten türemesi gerekmez.✓ - bBir
USTRUCT() tipi asla bir UPROPERTY() üyesi içeremez. - cBir
USTRUCT() tipi ağ üzerinden her zaman otomatik olarak replicate edilir. - dBir
USTRUCT() tipi bir TArray içinde kullanılamaz.
Açıklama:USTRUCT(), UObject kimliği, sahipliği ya da yaşam döngüsü olmadan hafif, değer-tipi veri reflection'ı sağlar; UCLASS() ise geleneksel olarak UObject'ten türeyen referans tipleri için kullanılır.
Ue Uobject Reflection GcZorluk 2
Unreal Engine'de bir C++ enum class'ı neden UENUM() ile işaretlersiniz?
- aBöylece enum'un alttaki depolama tipi otomatik olarak integer'dan string'e değişir.
- bBöylece derleyici, hiçbir iki enumerator'ın aynı değeri paylaşmamasını zorunlu kılar.
- cBöylece enum'un değerleri editöre ve Blueprint'e görünür hale gelir.✓
- dBöylece enum, header'ı include edilmeden forward-declare edilebilir.
Açıklama:UENUM(), enum'u reflection'a kaydeder; bu da editörün ve Blueprint'in enumerator'ları göstermesini ve motorun seçilen değeri ham integer yerine ismiyle serialize etmesini sağlayan şeydir.
Ue Uobject Reflection GcZorluk 3
Unreal'in reflection sisteminde, reflected bir interface tanımlamak neden biri U biri I önekli iki sınıf gerektirir?
- a
U önekli sınıf yalnızca Shipping build'lerde, I önekli sınıf ise yalnızca Debug build'lerde kullanılır. - b
U önekli sınıf Blueprint versiyonu, I önekli sınıf ise yalnızca-C++ versiyonudur ve proje başına yalnızca biri var olabilir. - c
U önekli sınıf reflection metadata'sını taşır; I önekli sınıf ise virtual fonksiyonları barındırır.✓ - d
U önekli sınıf fonksiyon implementasyonlarını saklar, I önekli sınıf ise derlemeden sonra silinir.
Açıklama:Bu ikili-sınıf deseni, reflection kayıt işini (U sınıfı) saf virtual fonksiyonlara sahip asıl C++ interface sözleşmesinden (I sınıfı) ayırır; bir sınıf, I sınıfından türeyerek interface'i implement eder.
Ue Uobject Reflection GcZorluk 2
Bir UObject* sınıf üyesinin üzerinde UPROPERTY() makrosu yok. Bu üye için doğrudan sonuç nedir?
- a
UPROPERTY() eklenene kadar derleyici sınıfı derlemeyi reddeder. - bMotorun reflection sistemi onun varlığından habersizdir.✓
- cPointer, derleme zamanında otomatik olarak bir
TWeakObjectPtr'a dönüştürülür. - dÜye, varsayılan olarak Blueprint'ten erişilebilir hale gelir.
Açıklama:Ham, reflect edilmemiş bir UObject*, motor için görünmezdir: hedefi yok edildiğinde otomatik olarak null'lanmaz ve garbage collection sırasında hedefi canlı tutmaz.