본문 바로가기
프로그래밍

👨‍💻 [Unreal] 언리얼 엔진 5 에서 TSubclassOf<T> 는 무엇이며, 활용 방법은 어떻게 되나요?

by 밝음의기둥 2024. 10. 18.
반응형

👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

언리얼 엔진 5 에서 TSubclassOf<T> 는 무엇이며, 활용 방법은 어떻게 되는지 물어봤습니다.


질문 >

언리얼 엔진 5 에서 TSubclassOf<T> 는 무엇이며, 활용 방법은 어떻게 되나요?

답변 >

**TSubclassOf<T>**는 언리얼 엔진에서 클래스 타입을 변수로 저장하고, 특정 클래스와 그 자식 클래스들을 참조할 수 있게 해주는 템플릿입니다. 이 기능은 주로 C++ 코드와 블루프린트에서 특정 클래스의 인스턴스를 동적으로 생성할 때 사용됩니다.

TSubclassOf<T>의 개념:

  • TSubclassOf<T>는 템플릿 클래스로, T는 참조할 부모 클래스의 타입입니다. 이를 통해 부모 클래스의 인스턴스뿐만 아니라 그 자식 클래스의 타입도 안전하게 참조할 수 있습니다. 예를 들어, TSubclassOf<AActor>는 AActor 클래스와 그 자식 클래스들을 참조할 수 있는 변수를 제공합니다.
  • 타입 안정성을 유지하기 위해 사용되며, 코드나 블루프린트에서 특정 부모 클래스의 하위 클래스를 참조할 수 있게 해줍니다. 이로 인해 런타임에서 동적 액터 생성과 같은 작업이 안전하게 수행됩니다.

사용 예시:

1. 클래스 변수 선언 및 액터 생성:

TSubclassOf<AActor> ActorClass;  // Actor와 그 하위 클래스 참조 가능

// ActorClass에서 액터를 생성
AActor* NewActor = GetWorld()->SpawnActor<AActor>(ActorClass, SpawnLocation, SpawnRotation);

  • TSubclassOf<AActor>를 사용하면 ActorClass 변수에 AActor 또는 그 자식 클래스의 타입을 저장할 수 있습니다. 이후 SpawnActor 함수를 사용해 런타임에 해당 클래스를 동적으로 생성합니다.

2. 블루프린트에서 사용:

  • TSubclassOf 변수는 블루프린트에서도 사용할 수 있습니다. 블루프린트에서 특정 클래스 타입을 설정한 뒤, 이 클래스 타입으로 동적 액터를 생성할 수 있습니다. 예를 들어, 스폰 포인트에서 적의 클래스를 TSubclassOf로 저장하고 게임 중 필요한 적을 동적으로 생성하는 식으로 활용됩니다.

활용 방법 및 장점:

  1. 런타임 동적 생성: 게임 중에 특정 클래스의 하위 클래스를 동적으로 생성하고 관리할 수 있어, 적이나 아이템의 스폰 시스템 등에서 자주 사용됩니다.
  2. 타입 안정성 유지: TSubclassOf<T>는 참조할 수 있는 클래스의 타입을 컴파일 타임에 제한하여, 런타임 오류를 줄이고 안전하게 코드를 작성할 수 있게 해줍니다.
  3. 블루프린트와의 통합: C++ 코드에서 정의한 TSubclassOf 변수를 블루프린트에서 사용할 수 있어, 개발자가 게임 로직을 유연하게 구성할 수 있습니다.

주의사항:

  • 유효한 클래스인지 확인: TSubclassOf로 참조된 클래스가 유효한지 항상 확인해야 합니다. 런타임에서 클래스가 nullptr일 경우 충돌이 발생할 수 있습니다.
if (ActorClass)
{
    AActor* NewActor = GetWorld()->SpawnActor<AActor>(ActorClass, SpawnLocation, SpawnRotation);
}

  • 템플릿 클래스이므로 부모 타입과 호환성 유지: TSubclassOf는 부모 타입과 하위 클래스 간의 상속 관계를 활용하므로, 부모 클래스와 호환되는 함수와 변수를 사용해야 합니다.

TSubclassOf<T>는 언리얼 엔진에서 동적 객체 생성과 코드의 유연성을 극대화하는 중요한 도구입니다. 이를 통해 런타임 동안 다양한 게임 오브젝트를 효율적으로 관리하고 생성할 수 있습니다 (Puget Systems)(Epic Games Developer).


🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기주도학습을 목적으로 라이브 스트리밍을 합니다. 📢 1인 게임 개발을 목표로 Unreal과 Blender를 학습 중입니

www.youtube.com

 

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com

 


 

반응형