Unreal

TSubclassOf vs TSoftClassPtr

(ꐦ •᷄ࡇ•᷅) 2025. 2. 13. 14:06

TSubclassOf<T>란?

  • 언리얼 엔진에서 특정 클래스의 서브 클래스를 안전하게 참조할 수 있도록 도와주는 템플릿 클래스이다.
  • 언리얼 엔진에서 UObject 또는 AActor 기반 클래스를 다룰 때, 특정 클래스의 하위 클래스(서브 클래스)만을 저장할 수 있는 변수를 만들 때 사용된다.

하드 레퍼런스

  • 클래스가 항상 메모리에 로드된 상태에서 바로 접근한다.

 

왜 필요한가?

  • 일반적인 UClass* 포인터를 사용하면 모든 UObject 타입을 받을 수 있어 타입 안전성이 떨어진다.
  • TSubclassOf는 UClass*로 변환될 수 있어, 언리얼 엔진의 클래스 시스템과 자연스럽게 통합된다.

 

사용법

TSubclassOf<AActor> ActorClass;

 

  • ActorClass 변수에는 AActor를 상속한 클래스만 저장 가능

 


TSoftClassPtr란?

  • 언리얼 엔진에서 특정 클래스의 서브 클래스를 참조할 수 있도록 하는 스마트 포인터이다.
  • 일반적인 TSubclassOf<T>와 달리, 소프트 클래스 레퍼런스를 사용하여 메모리를 효율적으로 관리할 수 있다.

 

소프트 레퍼런스

  • 클래스의 경로만 유지한다.
  • 클래스가 필요한 상황이 왔을 때, 그때 메모리에 로드.

TSubclassOf vs TSoftClassPtr

비교 항목 TSubclassOf<T> TSoftClassPtr<T>
타입 제한 특정 클래스를 상속한 서브 클래스만 저장 가능
로드 방식 하드 레퍼런스 (즉시 로드) 소프트 레퍼런스 (필요할 때만 로드)
메모리 관리 즉시 메모리에 로드됨 필요할 때만 메모리에 로드됨 (Lazy Load)
블루프린트 지원 지원
패키지 의존성 강한 의존성 약한 의존성
리소스 로딩 게임 시작 시 즉시 로드됨 필요할 때 로드되므로 성능 최적화 가능