본문 바로가기
Unreal/Manual

Unreal C++ 버튼을 눌러 게임 종료 (QuitGame)

by Dev_카페인 2023. 12. 16.
반응형

[Unreal/C++] 버튼을 눌러 게임 종료 (QuitGame)

 

언리얼 엔진에서 게임 종료를 위해서 Kismet 라이브러리의 UKismetSystemLibrary::QuitGame 함수를 사용한다.

월드와 플레이어 컨트롤러 종료 옵션 플랫폼 옵션이 필요하다.

References

Module Engine
Header /Engine/Source/Runtime/Engine/Classes/Kismet/KismetSystemLibrary.h
Include #include "Kismet/KismetSystemLibrary.h"
Source /Engine/Source/Runtime/Engine/Private/KismetSystemLibrary.cpp

Syntax

static void QuitGame
(
    const UObject * WorldContextObject,
    class APlayerController * SpecificPlayer,
    TEnumAsByte< EQuitPreference::Type > QuitPreference,
    bool bIgnorePlatformRestrictions
)

Parameters

Parameter Description
SpecificPlayer The specific player to quit the game. If not specified, player 0 will quit.
QuitPreference Form of quitting.
bIgnorePlatformRestrictions Ignores and best-practices based on platform (e.g on some consoles, games should never quit). Non-shipping only

플레이어 컨트롤러를 지정하지 않으면 0번째 플레이어가 종료된다.

 

다음은 위젯에서 게임을 종료하는 버튼을 눌러 종료하는 코드이다.

// MyWidget.h

#pragma once

#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "W_Quit.generated.h"

UCLASS()
class MAINPROJECT_API UW_Quit : public UUserWidget
{
	GENERATED_BODY()

private:
	virtual void NativeConstruct() override;

public:
	UFUNCTION()
		void Btn_Quit_OnClick();

public :
	UPROPERTY(meta = (BindWidget))
		class UButton* Btn_Cancel;

private:
	UPROPERTY(meta = (BindWidget))
		class UButton* Btn_Quit;
};
// MyWidget.cpp

#include "Lobby/Widgets/W_Quit.h"

#include "Kismet/KismetSystemLibrary.h"
#include "Components/Button.h"

void UW_Quit::NativeConstruct()
{
	Super::NativeConstruct();

	Btn_Quit->OnClicked.AddDynamic(this, &UW_Quit::Btn_Quit_OnClick);
}

void UW_Quit::Btn_Quit_OnClick()
{
	UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false);
}

 

반응형