Game Dev/Unreal C++ : Dev Log
언리얼 TSubClassOf 가 비어있을 때
GoldGiver
2024. 8. 16. 10:53
언리얼 TSubClassOf 가 비어있을 때
핵심 :
1. EditDefaultsOnly, EditAnywhere 등의 UPROPERTY 메타 태그를 잘 써보자
간혹 그럴 때가 있다. 위젯을 생성할 때, 블루프린트에 생성하고 싶은 BP 위젯을 넣어 코드에서 동적으로 생성하는 경우가.
UPROPERTY(BlueprintReadWrite, Category = Config)
TSubclassOf<class UMyWidget> MyWidgetClass;
보통은 위처럼 TSubclassOf 를 사용해서 위젯 블루프린트 클래스를 넣어주는데...
A -> B -> C ... 처럼 위젯의 hierarchy 구조가 있고, 내가 위의 TSubclassOf 세팅을 B 에서 했을 때, 최상위 부모 위젯인 A 에서는 MyWidgetClass 가 nullptr 인 이상한 경우가 있다.
그럴 때는 아래처럼 바꿔보자.
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = Config)
TSubclassOf<class UMyWidget> MyWidgetClass;
// or
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Config)
TSubclassOf<class UMyWidget> MyWidgetClass;
위처럼 바꾸고 에디터를 다시 키면, 마술처럼 MyWidgetClass 가 블루프린트에서 제대로 확인이 되는 상황이 만들어지곤 한다.
여름이었다.