ui를 계속 만지면서 유니티와의 차이점을 비교하고 있다.
언리얼에서 ui 구성하는 방식은 c++ 클래스로 부모 클래스를 선언후
위젯 블루 프린트가 그것을 상속 받아서 디자이너 화면에서 작업하는 것이다.
UserWidget 상속): 버튼 변수 선언, 클릭 시 실행될 핵심 로직, 서버 데이터 수신 등의 데이터/이벤트 로직을 작성합니다.먼저 UserWidget을 상속받은 C++ 클래스(MyUserWidget.h)를 만들고, 블루프린트에서 사용할 버튼 변수를 선언합니다.
C++
`// MyUserWidget.h #include "Blueprint/UserWidget.h" #include "Components/Button.h" // 버튼 컴포넌트를 쓰기 위해 필수! #include "MyUserWidget.generated.h"
UCLASS() class MYPROJECT_API UMyUserWidget : public UUserWidget { GENERATED_BODY()
protected: // 이 매크로가 핵심입니다. 블루프린트의 위젯 이름과 변수명을 동기화합니다. UPROPERTY(meta = (BindWidget)) class UButton* MyStartButton;
// 위젯이 생성될 때 실행되는 초기화 함수 (블루프린트의 Construct와 대응)
virtual void NativeConstruct() override;
// 버튼 클릭 시 실행될 함수
UFUNCTION()
void OnStartButtonClicked();
};`
이제 헤더에서 선언한 함수를 실제 클릭 이벤트와 연결(Bind)해줍니다.
C++
`// MyUserWidget.cpp void UMyUserWidget::NativeConstruct() { Super::NativeConstruct();
// 버튼 변수가 제대로 연결되었는지 확인 후 이벤트 등록
if (MyStartButton)
{
MyStartButton->OnClicked.AddDynamic(this, &UMyUserWidget::OnStartButtonClicked);
}
}
void UMyUserWidget::OnStartButtonClicked() { // 버튼 클릭 시 동작할 로직 작성 UE_LOG(LogTemp, Warning, TEXT("C++에서 버튼 클릭을 감지했습니다!")); }`
이제 에디터로 돌아와서 미리 만들어둔 **위젯 블루프린트(WBP)**를 엽니다.