如何解决发生异常:读取访问冲突 **this** 是 nullptr
我刚刚开始学习使用虚幻引擎 4.26.2 开发游戏的 C++。
我真的不知道我在做什么。
我创建了一个 UMG.UserWidget 来显示 HUD。然后我创建了一个继承自 UserWidget 的 C++ 类。之后,我重新绘制了该 UMG.UserWidget 的蓝图。我这样做是因为我想从 C++ 代码访问这个小部件(以更新玩家分数)。
除此之外,我还有一个 C++ 类,它继承自 AHUD。我使用这个类来显示带有以下代码的 UMG.UserWidget:
APongHUD::APongHUD()
{
PlayerHudWidget = NewObject<UPlayerHUDWidget>(UPlayerHUDWidget::Staticclass());
ConstructorHelpers::FClassFinder<UUserWidget> WBPPlayerHudFinder(TEXT("/Game/Blueprint/Widgets/UI/UMG_PlayerHUD"));
if (WBPPlayerHudFinder.Succeeded())
{
HudClass = WBPPlayerHudFinder.Class;
}
else
{
PlayerHudWidget = nullptr;
}
}
开始游戏
void APongHUD::BeginPlay()
{
Super::BeginPlay();
if (HudClass)
{
Widget = CreateWidget<UUserWidget>(GetWorld(),HudClass);
Widget->AddToViewport();
PlayerHudWidget = Cast<UPlayerHUDWidget>(Widget);
}
}
我已经用 PlayerHudWidget = Cast<UPlayerHUDWidget>(Widget);
行尝试了这段代码,并用相同的错误对其进行了注释。
当我尝试使用此功能更改分数时出现问题:
void APongHUD::SetAIscored(int value)
{
if (PlayerHudWidget != nullptr)
{
PlayerHudWidget->SetAIscore(value);
}
}
在这行 if (PlayerHudWidget != nullptr)
我收到错误:
发生异常:读访问 违反。 this 是 nullptr。
这是 UPlayerHUDWidget
头文件:
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "PlayerHUDWidget.generated.h"
/**
*
*/
UCLASS()
class POMG_API UPlayerHUDWidget : public UUserWidget
{
GENERATED_BODY()
public:
UPROPERTY(BlueprintReadWrite,Meta = (BindWidget))
class UTextBlock* Player_score;
class UTextBlock* AI_score;
void SetPlayerscore(int Newscore);
void SetAIscore(int Newscore);
};
及其实现:
#include "PlayerHUDWidget.h"
#include "Components/TextBlock.h"
void UPlayerHUDWidget::SetPlayerscore(int Newscore)
{
Player_score->SetText(FText::AsNumber(Newscore));
}
void UPlayerHUDWidget::SetAIscore(int Newscore)
{
AI_score->SetText(FText::AsNumber(Newscore));
}
我的问题是我不知道如何从 C++ 更新 UMG.UserWidget
HUD,而且我尝试的方法不起作用。
如何从 C++ 更新 UMG.UserWidget
HUD?也许修复这个错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。