Unreal Engine

[UE]TSubclassOf

programmer-faust 2025. 8. 29. 03:58
  • 순서
    1. TSubclassOf란?
    2. TSubclassOf 특
    3. TSubclassOf의 장단점
  • TSubclassOf란?
    1. UE에서 클래스 타입을 안전하게 다루기 위한 템플릿 스마트 포인터
    2. TSubclassOf<T>는 T타입을 상속한 클래스의 UClass 포인터만 가질 수 있는 템플릿 클래스이다. => 즉, 특정 부모 클래스의 서브클래스만 지정 가능하게 만들어줌.
    3. 내부적으로 UClass*를 담고 있지만, 타입 체크가 컴파일/런타임에서 안전하게 이루어짐
  • TSubclassOf 특징
    1. 타입 안전
      • 특정 클래스 또는 특정 클래스의 서브클래스만 할당 가능함
      • 잘못된 타입을 할당하려고 하면 컴파일 에러 또는 런타임 체크 실패할 수 있음
    2. UClass 포인터 기반
      • 내부적으로는 UClass*를 가지고 있음
      • 필요시 .Get()으로 UClass*를 가져올 수 있음
    3. 블루프린트 연동 가능
      • 에디터에서 클래스 선택 드롭다운으로 편리하게 서브클래스 지정 가능함.
  • TSubclassOf의 장단점
    1. 장점
      • 타입의 안전성을 보장함
      • 블루프린트에서 연동 가능함
      • 런타임 체크가 용이함: 내부가 UClass*이므로 .Get()으로 UClass 포인터를 사용 가능하며, IsChildOf()같은 함수로 안전하게 서브클래스 확인이 가능함
      • 코드 가독성/안정성 향상: UClass*를 사용하면 어떤 클래스든 들어갈 수 있어 에러 가능성이 높지만 TSubclassOf을 사용 시 타입의 의도가 명확해짐
    2. 단점
      • 추가적인 제약
        1. 부모 클래스 제한 때문에 모든 클래스 타입을 자유롭게 담을 수 없음.
        2. 타입 체크를 유연하게 하고 싶은 경우에는 UClass*가 더 자유로움.
      • 템플릿 사용
        1. C++ 템플릿이므로 가끔 코드 복잡성이 증가할 수 있음. 함수 매개변수로 사용 시 템플릿 명시가 필요함
      • UClass 포인터와 달리 간접 참조
        1. 내부가 UClass*지만, 접근하려면 .Get()필요하여 약간의 문법적 오버헤드가 존재함
  • 사용 예
    1. 스폰 클래스 지정
    2. 블루프린트 에디터에서 클래스 선택
    3. 런타임 서브클래스 체크

'Unreal Engine' 카테고리의 다른 글

[UE] UE의 string 클래스  (1) 2025.08.29
[UE] 유효성 검사  (0) 2025.08.29
[UE]StaticClass와 GetClass  (0) 2025.08.29
[UE] 언리얼 빌드 툴/헤더 툴  (0) 2025.08.29
[UE]스마트 포인터  (0) 2025.08.29