게임 개발/Unreal Engine
[UE] BindWidget으로 C++와 UMG 연결
지노윈
2024. 1. 23. 20:27
반응형
C++에서 Blueprint으로 생성된 위젯을 어떻게 제어할 수 있을까요?
이에 대한 답은 BindWidget 메타 속성입니다.
UPROPERTY(BlueprintReadWrite, meta = (BindWidget))
class UTextBlock* TitleLabel;
UPROPERTY(BlueprintReadWrite, meta = (BindWidget))
class UImage* IconImage;
다음은 예제 코드입니다.
BindExample.h
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "BindExample.generated.h"
UCLASS(Abstract)
class UBindExample : public UUserWidget
{
GENERATED_BODY()
protected:
virtual void NativeConstruct() override;
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
class UTextBlock* ItemTitle;
};
BindExample.cpp
#include "BindExample.h"
#include "Components/TextBlock.h"
void UBindExample::NativeConstruct()
{
Super::NativeConstruct();
// ItemTitle can be nullptr if we haven't created it in the
// Blueprint subclass
if (ItemTitle)
{
ItemTitle->SetText(FText::FromString(TEXT("Hello world!")));
}
}
언리얼 에디터에서 UBindExample을 부모로하는 Widget Blueprint를 만듭니다.
BindWidget으로 정의한 ItemTitle과 동일한 이름과 타입의 멤버를 추가합니다.
아래 이미지와 같이요~.
meta=(BindWidget)으로 정의하면 항상 동일한 이름의 위젯을 만들어줘야 합니다.
선택적으로 이러한 것을 할 필요가 있습니다. 이 경우 meta=(BindWidgetOptional)로 정의하면 됩니다.
https://benui.ca/unreal/ui-bindwidget/