언리얼의 TSubclassOf
에대해 알아보겠습니다.
TSubclassOf
는 언리얼 프로그래밍시 UClass
유형의 안정성을 위해 사용할수있는 템플릿클래스이다.
프로젝트에서 대미지 유형을 지정할 수 있는 프로젝타일 클래스를 개발하고 있다.
그냥 UPROPERTY
유형의 UClass
를 만들고 디자이너가항상 UDamageType
파생 클래스만을 사용하길 바라거나,
TSubclassOf
템플릿을 사용하여 디자이너가 선택 가능한 클래스를 제한할 수 있다.
/** type of damage */ UPROPERTY(EditDefaultsOnly, Category=uclassDmage) UClass* DamageType;
위 코드의 결과는 다음과같다.
UClass
로 할당될수 있는 모든클래스들이 보인다 이렇게될경우 잘못된 클래스를 할당할수 있다.
/** type of damage */ UPROPERTY(EditDefaultsOnly, Category=tsubDmage) TSubclassOf<UDamageType> DamageType;
위의 코드의 결과는 다음과같다.
TSubclassOf
의경우는 UDabageType
으로 파생된 클래스만 할당할수 있어 안정성을 확보할 수 있다.
Tsubclassof
에 호환되지 않는 클래스를 할당하려 했을때 한번 검증하는 과정을 거친다, 할당할수 없는경우 컴파일 오류가 난다.
UClass* ClassA = UDamageType::StaticClass();
TSubclassOf<UDamageType> ClassB; ClassB = ClassA; // Performs a runtime check
TSubclassOf<UDamageType_Lava> ClassC; ClassB = ClassC; // Performs a compile time check
언리얼 TSubclassof
에대해 알아보았습니다
번역이 이상하거나 이해가가지않는부분을 제나름대로 해석하여 작성해보았습니다!
수정할부분은 댓글로 알려주심녀 감사합니다.