Runner Ue4.26 C++ 개발하기 #3

박기덕·2021년 3월 26일

UE4 C++ Runner Project

목록 보기
3/5

Widget 만들기

  1. 에디터에서 UserWidget 만든다.
    ex) Start , Quit 위치 , 버튼 이미지등을 배치한다.
    버튼 Name 을 StartBtn , QuitBtn 으로 설정 cpp 파일과 맞춘다.
  2. C++ 로 UserWidget 를 상속받아 MainMenu.cpp 만든다.

protected:
UPROPERTY(BlueprintReadWrite, meta = (BindWidget))
class UButton* StartBtn;

UPROPERTY(BlueprintReadWrite, meta = (BindWidget))
class UButton* QuitBtn;

virtual void NativeConstruct() override;
  1. 에디터에서 부모를 MainMenu 로 수정 , Name이 같지 않으면 에러 발생

  2. 버튼 클릭했을때 처리
    void UMainMenuWidget::NativeConstruct()
    {
    if (StartBtn)
    {
    StartBtn->OnClicked.AddDynamic(this, &UMainMenuWidget::OnStartClick);
    }

    if (QuitBtn)
    {
    	QuitBtn->OnClicked.AddDynamic(this, &UMainMenuWidget::OnQuitClick);
    }

    }

5.UWidgetBlueprintLibrary::SetInputMode_GameAndUIEx(UGameplayStatics::GetPlayerController(GetWorld(), 0), this);
UI 만 사용자 입력에 응답 할 수있는 입력 모드를 설정하고 UI가 처리하지 않으면 플레이어 입력 / 플레이어 컨트롤러가 기회를 얻습니다.
-> 왜써야 하는지는 좀더....

UWorld* World = GetWorld();

//MainMenuMap 맵 로드
UGameplayStatics::OpenLevel(World, TEXT("MainMenuMap"));
// 게임 종료
UKismetSystemLibrary::ExecuteConsoleCommand(World, TEXT("quit"));
//게임 잠시 멈충
UGameplayStatics::SetGamePaused(GetWorld(), true);
//다시 시작
UKismetSystemLibrary::ExecuteConsoleCommand(World, TEXT("RestartLevel"));

profile
언리얼 개발자

0개의 댓글