Unreal Engine'de UObject, AActor ve UActorComponent arasındaki fark nedir?
Cevap
UObject Unreal'ın tüm yönetilen nesnelerinin temel sınıfıdır; reflection, garbage collection, serileştirme ve editör entegrasyonu buradan gelir. AActor, dünyaya (level) yerleştirilebilen, transform'u olabilen ve replicate edilebilen bir UObject'tir. UActorComponent ise bir Actor'a eklenen, yeniden kullanılabilir davranış parçasıdır.
| Sınıf | Dünyada var mı? | Transform | Tipik kullanım |
|---|---|---|---|
| UObject | Hayır | Yok | Veri, yönetici, item tanımı |
| AActor | Evet (SpawnActor) | RootComponent üzerinden | Karakter, kapı, mermi |
| UActorComponent | Actor'a bağlı | Yok | Health, Inventory mantığı |
| USceneComponent | Actor'a bağlı | Var | Mesh, kamera, collision |
- Actor'ların konumu aslında RootComponent'ın (bir USceneComponent) transform'udur.
- UObject
NewObject<T>()ile, ActorGetWorld()->SpawnActor<T>()ile, component ise constructor'daCreateDefaultSubobject<T>()ile oluşturulur. - Prefix kuralı:
UUObject türevleri,AActor türevleri,Fstruct/düz C++ tipleri,Iinterface,Eenum,Ttemplate.
AMyCharacter::AMyCharacter()
{
Health = CreateDefaultSubobject<UHealthComponent>(TEXT("Health"));
Camera = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera"));
Camera->SetupAttachment(RootComponent);
}Tasarım ilkesi: davranışı devasa Actor alt sınıflarına değil, component'lere bölerek kompozisyonu tercih edin.
İlgili Unreal & C++ soruları
- Oyun motorlarında neden custom memory allocator kullanılır? Linear (arena), pool ve stack allocator nasıl çalışır?
- Cache-friendly veri yapısı ne demektir? Array of Structs (AoS) ile Struct of Arrays (SoA) farkı nedir?
- C++'ta move semantics nedir? Aşağıdaki kodda hangi constructor'lar çağrılır?
- C++'ta virtual fonksiyonlar ve vtable nasıl çalışır? Destructor neden virtual olmalıdır?
- Unreal'da replication nasıl çalışır? Replicated property, RepNotify ve RPC türleri arasındaki fark nedir?
- Unreal'ın Gameplay Framework'ünde GameMode, GameState, PlayerController, PlayerState ve Pawn'ın rolleri nelerdir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.