最简单的 UE 4 C++ 教程 —— 打印调试信息【五】

举报
ShaderJoy 发表于 2021/11/19 01:31:33 2021/11/19
【摘要】  【原教程是基于 UE 4.18,我是基于 UE 4.25】 英文原地址 接上一节,我们新创建一个名为 ConsoleLog 的新 Actor 子类(我们不需要在头文件中执行任何操作)。 ConsoleLog.h #pragma once #include "CoreMinimal.h"#includ...

 【原教程是基于 UE 4.18,我是基于 UE 4.25】

英文原地址

接上一节,我们新创建一个名为 ConsoleLog 的新 Actor 子类(我们不需要在头文件中执行任何操作)。

ConsoleLog.h


  
  1. #pragma once
  2. #include "CoreMinimal.h"
  3. #include "GameFramework/Actor.h"
  4. #include "ConsoleLog.generated.h"
  5. UCLASS()
  6. class UNREALCPP_API AConsoleLog : public AActor
  7. {
  8. GENERATED_BODY()
  9. public:
  10. // Sets default values for this actor's properties
  11. AConsoleLog();
  12. protected:
  13. // Called when the game starts or when spawned
  14. virtual void BeginPlay() override;
  15. public:
  16. // Called every frame
  17. virtual void Tick(float DeltaTime) override;
  18. };

接着我们将在 .cpp 文件中打印日志消息。对于这个例子,我们将在 BeginPlay 方法中打印该消息。所以,当游戏开始时,消息将打印出来。

下面是打印消息的三种方法。

  • 打印到控制台
  • 打印到屏幕
  • 打印的数据格式为向量

分别如下所示

UE_LOG(LogTemp, Warning, TEXT("I just started running"));
 
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Screen Message"));
 
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Orange, FString::Printf(TEXT("My Location is: %s"), *GetActorLocation().ToString()));
 

下面是完整的.cpp文件(使用宏定义可以简化打印调试信息的步骤)


  
  1. // define a print message function to print to screen
  2. #define print(text) if (GEngine) GEngine->AddOnScreenDebugMessage(-1, 1.5, FColor::Green,text)
  3. #define printFString(text, fstring) if (GEngine) GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Magenta, FString::Printf(TEXT(text), fstring))
  4. #include "ConsoleLog.h"
  5. // Sets default values
  6. AConsoleLog::AConsoleLog()
  7. {
  8. // Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
  9. PrimaryActorTick.bCanEverTick = true;
  10. }
  11. // Called when the game starts or when spawned
  12. void AConsoleLog::BeginPlay()
  13. {
  14. Super::BeginPlay();
  15. // Standard way to log to console.
  16. UE_LOG(LogTemp, Warning, TEXT("I just started running"));
  17. // Log to Screen
  18. GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Screen Message"));
  19. FVector MyVector = FVector(200,100,900);
  20. // log vector
  21. GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Orange, FString::Printf(TEXT("My Location is: %s"), *GetActorLocation().ToString()));
  22. // Use the shortcut defined above
  23. print("Hello Unreal");
  24. printFString("My Variable Vector is: %s", *MyVector.ToString());
  25. }
  26. // Called every frame
  27. void AConsoleLog::Tick(float DeltaTime)
  28. {
  29. Super::Tick(DeltaTime);
  30. }

执行的结果如下所示

 

先打印的在下,后打印的在上

 

 

 

文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。

原文链接:panda1234lee.blog.csdn.net/article/details/119099558

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。