
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
아래와 같이 IsValid()과 !=nullptr 의 차이점을 정리했습니다.
이 과정에서 다음과 같은 궁금증이 발생했습니다.
UCLASS()
class BASIS_API AMainGame : public AGameMode
{
GENERATED_BODY()
public:
virtual void BeginPlay() override;
UPROPERTY(EditAnywhere)
TSubclassOf<class UUserWidget> WidgetClass;
UPROPERTY()
TObjectPtr<class UUserWidget> Widget;
UPROPERTY(EditAnywhere)
TSubclassOf<class UUserWidget> EndWidgetClass;
UPROPERTY()
TObjectPtr<class UUserWidget> EndWidget;
};
void AMainGame::BeginPlay()
{
Super::BeginPlay();
if (IsValid(WidgetClass))
{
Widget = CreateWidget<UUserWidget>(GetWorld(), WidgetClass);
}
if (IsValid(EndWidgetClass))
{
EndWidget = CreateWidget<UUserWidget>(GetWorld(), EndWidgetClass);
}
if (IsValid(Widget))
{
Widget->AddToViewport();
}
// ....
}
Widget과 EndWidget은 IsValid() 으로 확인하는 것이 타당해 보입니다.
그런데, WidgetClass과 EndWidgetClass도 IsValid()으로 검사해야 하는 것인가요? !=nullptr으로도 충분할 것이라고 생각합니다.
