본문 바로가기
언리얼

[UE5] TSubclassOf

by 안선생 2025. 4. 6.

TSubclassOf란?

  • 정의:
    TSubclassOf는 Unreal Engine에서 특정 기본 클래스(예: AActor, UDamageType 등)를 상속하는 클래스 타입을 안전하게 저장할 수 있도록 해주는 템플릿 클래스(템플릿 메타데이)입니다.
    내부적으로는 UClass*를 저장하지만, 템플릿 인자로 지정한 클래스나 그 자식 클래스만을 허용하여 타입 안정성을 보장합니다.

메타클래스 역할:
TSubclassOf 변수는 클래스 자체의 정보를 담고 있으므로, 이를 이용해 액터를 동적으로 스폰하거나, 블루프린트에서 특정 클래스만 선택하도록 제한할 수 있습니다.

메타클래스는 간단하게 UPROPERTY매크로로 선언된 변수들을 하나의 UClass로 저장한 데이터 집합체라고 생각하면 된다.

 

 

TSubclassOf를 사용하는 이유

  • 타입 안정성 확보:
    일반 UClass* 변수는 모든 클래스 타입을 받을 수 있지만, TSubclassOf<AProjectile>처럼 선언하면 AProjectile과 그 자식 클래스만 할당할 수 있어, 잘못된 클래스가 할당되는 위험을 줄여줍니다.
  • 에디터 편의성 제공:
    블루프린트나 세부 정보 패널에서 TSubclassOf 변수는 드롭다운 목록으로 표시되며, 지정된 기본 클래스의 파생 클래스만 보여주므로 올바른 클래스를 쉽게 선택할 수 있습니다.
  • 동적 객체 생성에 활용:
    SpawnActor() 같은 함수에서 TSubclassOf로 저장된 UClass 정보를 이용하여, 런타임에 올바른 액터 인스턴스를 생성할 수 있습니다. 여기서 스폰할 때 CDO를 가져와서 스폰한다.
  • CDO란?
    각 UCLASS는 엔진에서 자동으로 생성하는 기본 인스턴스, 즉 CDO를 가지고 있습니다.
    CDO는 해당 클래스의 UPROPERTY로 선언된 변수들의 기본값과 메타데이터를 포함한 "템플릿" 객체입니다.

 

결론

TSubclassOf는 Unreal Engine에서 클래스 타입의 안전한 참조와 에디터 편의성을 동시에 제공하는 강력한 도구입니다.

  • 타입 안정성: 잘못된 클래스가 할당되는 것을 방지합니다.
  • 에디터 드롭다운: 지정된 기본 클래스의 파생 클래스만 노출되어 올바른 선택을 유도합니다.
  • 동적 스폰: 저장된 UClass 정보를 통해 CDO를 기반으로 액터를 생성할 수 있습니다.

TSubclassOf는 UClass(메타데이터)를 한번 더 안전하게 랩핑해놓 안전 클래스라고 보면 된다. 아래 커밋을 봐도 알 수 있다.