Unreal
[UE5/언리얼엔진5] TSubClassOf, TSoftClassPtr 캐스팅 방법
건전한 건전지
2024. 1. 24. 20:10
728x90
반응형
ItemSpawner.h
UPROPERTY(EditDefaultsOnly)
TSubClassOf<AItemClass> Item;
과 같이 선언해주고 블루프린트에서 AItemClass를 매핑시켜준 다음 해당 클래스의 멤버 변수를 사용하고 싶었다.
내 생각에는 AItemClass를 담고 있으니까 매핑 후 Item에 그냥 접근해서 사용하면 될 줄 알았는데 문제가 발생했다.
만약 AItemClass에 있는 public 변수인 ItemName을 받아오고 싶다면
ItemSpawner.cpp
BeginPlay(){
FString = Item->ItemName; -> 아예 접근이 안됨
}
처럼은 접근이 아예 안됐다.
그래서 AItemClass로 캐스팅을 해서 사용을 해보려고 했는데
ItemSpawner.cpp
BeginPlay(){
FString = Item->ItemName; -> 아예 접근이 안됨
if(AItemClass* NewItem = Cast<AItemClass>(Item)){
-> 이 경우도 캐스팅에 실패하였다.
}
}
방법은 ClassDefaultsObject. 즉 CDO를 가져와서 캐스팅 해주는 것이었다.
ItemSpawner.cpp
BeginPlay(){
FString = Item->ItemName; -> 아예 접근이 안됨
if(AItemClass* NewItem = Cast<AItemClass>(Item)){
-> 이 경우도 캐스팅에 실패하였다.
}
if(AItemClass* NewItem = Cast<AItemClass>(Item->GetDefaultsObject()){
이렇게 CDO를 얻어오거나 혹은
}
if(AItemClass* NewItem = Cast<AItemClass>(Item->ClassDefaultObject){
처럼 CDO를 받아오면 된다.
}
}
음... 맞는 방법인지는 모르겠음
유저 위젯타입은 그냥 생성 가능
TSubClassOf<UUserWidget> MyWidget;
CreateWidget(GetWorld(), MyWidget);
728x90
반응형