UE5--013--HUDWidget--RestartWidget


1. HUDWidget

1.1 HUDWidget.h


#pragma once

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

/**
 * 
 */
UCLASS()
class C005DODGEBALL_API UHUDWidget : public UUserWidget
{
    GENERATED_BODY()
    
public:
    UPROPERTY(meta = (BindWidget))
    class UProgressBar* HealthBar;

public:
    void UpdateHealthPercent(float HealthPercent);

};


1.2 HUDWidget.cpp


#include "HUDWidget.h"
#include "Components/ProgressBar.h"


void UHUDWidget::UpdateHealthPercent(float HealthPercent)
{
    HealthBar->SetPercent(HealthPercent);
}


1.3 BP_HUDWidget

image


2. RestartWidget

2.1 RestartWidget.h


#pragma once

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

/**
 * 
 */
UCLASS()
class C005DODGEBALL_API URestartWidget : public UUserWidget
{
    GENERATED_BODY()
    
public:

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

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

protected:
    UFUNCTION()
    void OnRestartClicked();

    UFUNCTION()
    void OnExitClicked();

public:
    virtual void NativeOnInitialized() override;

};


2.2 RestartWidget.cpp


#include "RestartWidget.h"
#include "Components/Button.h"
#include "Kismet/GameplayStatics.h"
#include "DodgeballPlayerController.h"

void URestartWidget::NativeOnInitialized()
{
    Super::NativeOnInitialized();
    if (RestartButton != nullptr)
    {
        RestartButton->OnClicked.AddDynamic(this, &URestartWidget::OnRestartClicked);
    }
    if (ExitButton != nullptr)
    {
        ExitButton->OnClicked.AddDynamic(this, &URestartWidget::OnExitClicked);
    }
}

void URestartWidget::OnRestartClicked()
{
    ADodgeballPlayerController* PlayerController = Cast<ADodgeballPlayerController>(GetOwningPlayer());
    if (PlayerController != nullptr)
    {
        PlayerController->HideRestartWidget();
    }
    UGameplayStatics::OpenLevel(this, FName(*UGameplayStatics::GetCurrentLevelName(this)));
}

void URestartWidget::OnExitClicked()
{
    UKismetSystemLibrary::QuitGame(this, nullptr, EQuitPreference::Quit, true);
}


2.3 BP_RestartWidget

image


image


posted @ 2025-04-05 20:54  ParamousGIS  阅读(35)  评论(0)    收藏  举报