菜单暂停 C++ UE4

Menu pause C++ UE4

你知道在c++中如何在unreal上暂停吗? 我有一个带有恢复按钮的小部件蓝图和派生自 UUserWidget 的 C++ 脚本。 我想按 tab 键暂停游戏。 请问有人有解决办法吗?

这是我的 MenuPause.h :


#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "Components/Button.h"
#include "MenuPause.generated.h"

/**
 * 
 */
UCLASS()
class PROJET2_API UMenuPause : public UUserWidget
{
    GENERATED_BODY()

    public:
    virtual bool Initialize() override;

    UPROPERTY(meta = (BindWidget))
    class UButton* ResumeButton;

    UFUNCTION()
void OnClickResume(bool bPaused);
}

这是我的 MenuPause.cpp :

#include "MenuPause.h"
#include "Kismet/GameplayStatics.h"

bool UMenuPause::Initialize()
{
    Super::Initialize();
    ResumeButton->OnClicked.AddDynamic(UMenuPause::OnClickResume(bool bPaused));
    return true;
}

void UMenuPause::OnClickResume(bool bPaused)
{
    UGameplayStatics::SetGamePaused(ResumeButton, bPaused);
    
    //UGameplayStatics::OpenLevel(this, FName(*GetWorld()->GetName()), false);
}

感谢您的理解:)

//PlayerController

.h

virtual void SetupInputComponent() override;

UFUNCTION()
    void TogglePauseEvent();
.cpp
void SetupInputComponent()
{
    Super::SetupInputComponent();
    if (InputComponent)
    {
        this->PlayerInput->AddActionMapping(FInputActionKeyMapping("TogglePause", EKeys::Tab));
        InputComponent->BindAction("TogglePause", EInputEvent::IE_Pressed, this, &ThisClass::TogglePauseEvent);
    }
}

void TogglePauseEvent()
{
    MenuPause->ChangeTogglePause();
}

//UMenuPause
.h

bool bTogglePause = false;

.cpp

void UMenuPause::ChangeTogglePause()
{

    UGameplayStatics::SetGamePaused(ResumeButton, bTogglePause);
  
    bTogglePause = !bTogglePause;
}