返回

UE4 C++ 之打印调试信息 五

前端

前言

在前一节中,我们创建了一个名为 ConsoleLog 的新 Actor 子类。现在,我们需要在该子类中添加一些代码来打印调试信息。

首先,在 ConsoleLog.h 头文件中添加以下代码:

#include "CoreMinimal.h"
#include "UObject/Object.h"
#include "Engine/EngineTypes.h"
#include "Engine/World.h"

UCLASS()
class UCONSOLELOG : public AActor
{
    GENERATED_BODY()

public:
    // Sets default values for this actor's properties
    UCONSOLELOG();

protected:
    // Called when the game starts or when spawned
    virtual void BeginPlay() override;

public:
    // Called every frame
    virtual void Tick(float DeltaTime) override;

private:
    UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "ConsoleLog")
    FString LogText;
};

接下来,在 ConsoleLog.cpp 源文件中添加以下代码:

#include "ConsoleLog.h"

UCONSOLELOG::UCONSOLELOG()
{
    LogText = "Hello World!";
}

void UCONSOLELOG::BeginPlay()
{
    Super::BeginPlay();

    GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, LogText);
}

void UCONSOLELOG::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);
}

现在,当我们在关卡中放置一个 ConsoleLog Actor 时,它将在控制台中打印 "Hello World!"。

使用 FDebugHelper 进行调试

除了直接使用 GEngine->AddOnScreenDebugMessage() 函数打印调试信息外,我们还可以使用 FDebugHelper 类来进行调试。FDebugHelper 类提供了一些更高级的调试功能,例如绘制调试线、绘制调试文本等。

要在 ConsoleLog.cpp 源文件中使用 FDebugHelper 类,我们需要先包含 FDebugHelper.h 头文件:

#include "FDebugHelper.h"

然后,我们可以在 BeginPlay() 函数中使用 FDebugHelper 类来打印调试信息:

void UCONSOLELOG::BeginPlay()
{
    Super::BeginPlay();

    FDebugHelper::DrawString(GetWorld(), FVector(0.f, 0.f, 100.f), LogText, FColor::Red, 5.f);
}

这段代码将使用 FDebugHelper 类在世界中绘制 "Hello World!" 这段文本。

总结

在本节中,我们学习了如何使用 GEngine->AddOnScreenDebugMessage() 函数和 FDebugHelper 类来打印调试信息。这些调试信息对于我们开发游戏时发现和解决问题非常有用。