[UE4] TSubClassof에 대하여

그림자왕국·2021년 8월 15일
1

UE4

목록 보기
1/7

TSubClassof

언리얼의 TSubclassof는 UClass 타입의 안정성을 보장해주는 템플릿 클래스이다.
주로 동적할당의 대상이 되는 클래스 정보를 저장하여 포인터와 짝을 지어 같이 다니는 편이다.

하지만 이 클래스는 매우 성가신 점이 하나 있는데 TSubClassof에 클래스 정보를 저장할 때 선언할 때의 템플릿<>과 호환되는 타입을 저장할경우 RunTime에 Check를 하지만

서로 호환되지 않는 클래스를 저장하려 할 경우 CompileTime에 Check를 하여 보통 컴파일 타임 이후에 실행되는 블루프린트와 연동하기가 매우 어렵다는 것이다.

그래서 이에 대한 해결법을 간단히 소개하겠다.

Solution

일단 동적할당하려는 포인터를 선언해주고 동적할당할 클래스 정보를 저장하는 TSubClassof도 선언해준다.

여기가 중요한데 TSubclassof의 초기화는 생성자에 해줘야한다. 베이스가 되는 클래스의 StaticClass를 불러와서 저장하여 무조건 포인터보다 일찍 초기화해줘야 한다.

그 후 초기화 함수에서 초기화 된 TSubclassof의 클래스 정보를 가지고 동적할당을 해주면 컴파일 타임을 크래시 없이 무사히 넘길 수 있게 된다.

이런 방식으로 TSubClassof 클래스를 사용한다면 컴파일 타임에는 생성자에서 베이스 클래스로 초기화를 해줘서 문제 없이 넘어가며, 컴파일 후 에디터를 열어 블루프린트로 Tsubclassof에 원하는 자식 클래스를 설정해주고 플레이를 눌러 런타임으로 넘어가면 블루프린트에서 저장한 클래스를 바탕으로 InitalizeComponent 함수가 호출되어 설정한 자식 클래스로 초기화 할 수 있다.

profile
언리얼 엔진 매니아입니다.

0개의 댓글