[UE4]UE4输出日记到屏幕/控制台(UE_LOG)与自定义日记类别

11 篇文章 0 订阅

输出日记/消息到屏幕上

GEngine->AddOnScreenDebugMessage

首先天加头文件

//头文件Engine.h访问 GEngine 中的 AddOnscreenDebugMessage 函数(用于将消息输出至屏幕)的必要功能。
#include "Engine/Engine.h"

GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "ATrap::SteppedToTrigger_Implementation -- AddOnScreenDebugMessage!!!!");

// FString::Printf 格式话字符串
GEngine->AddOnScreenDebugMessage(-1, 10.f, FColor::White, FString::Printf(TEXT("-- TestFuncThreeParams,%d, %d,%f"), bVal ? 1:0, iVal, fVal));

----------------------------------------

输出日记/消息到编辑器控制台

查看Log

Game模式:记录Log需要在启动参数后加 -Log 。

编辑器模式:打开Log窗口(Window->Developer Tools->Output Log)

//UE_LOG
UE_LOG(LogTemp, Log, TEXT("C++ : CountdownHasFinished_Implementation"));

使用Log

UE_LOG(LogMy,Warning,TEXT("Hello World"));
UE_LOG(LogMy,Warning,TEXT("Show a String %s"),*FString("Hello"));
UE_LOG(LogMy,Warning,TEXT("Show a Int %d"),100);
//FString官方文档:https://docs.unrealengine.com/4.26/zh-CN/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling/FString/
//构建 FString 
FString TestHUDString = FString(TEXT("This is my test FString."));
//输出 FString 
UE_LOG(LogTemp, Log, TEXT("%s"), *TestHUDString );
// FString::Printf 格式话字符串
//输出 FString 
UE_LOG(LogTemp, Log, TEXT("%s"),  FString::Printf(TEXT("-- TestFuncThreeParams,%d, %d,%f"), bVal ? 1:0, iVal, fVal) );

第一个参数为Log的分类。

第二个参数为类型,有Log、Warning、Error三种类型。Log为灰色,Warning为黄色,Error为红色。

常用的符号:

  1. %s 字符串(FString)
  2. %d 整型数据(int32)
  3. %f 浮点型(float)

自定义日记类别Category

自定义 Category 的宏可参考 LogMactos.h 文件。

在UE4中,UE_LOG 宏有五个日志类别(Category):

1.LogTemp: 用于临时调试信息或快速测试。
2.LogGamePlay: 用于游戏运行时的事件和状态更新。
3.LogBlueprintUserMessages: 用于从蓝图中输出的用户消息。
4.LogOnline: 用于在线游戏模块相关的日志记录。
5.LogNavigation: 用于导航系统相关的日志记录。

你也可以自定义其他的日志类别来适应你的项目需求。日志类别可以帮助你更好地组织和查找日志信息,以便于调试和问题排查

你可以在UE4中定义自己的日志类别(Category)。可以使用DECLARE_LOG_CATEGORY_EXTERN宏在头文件中声明,并使用DEFINE_LOG_CATEGORY宏在源文件中定义。以下是一个示例:

MyLogCategory.h 头文件声明自定义日志类别:

#pragma once

#include "CoreMinimal.h"
#include "Logging/LogCategory.h"
/// 如果想定义一个‘Public’的Category,并且在全局生效,不管是 static 函数还是其他类都可以使用,
/// 就需要在头文件中声明一个Category,并在CPP中定义,每个用到的CPP文件都需要include该头文件。
/// 使用 DECLARE_LOG_CATEGORY_EXTERN 宏来声明日记类别。这里的日记类别为 MyLogCategory
DECLARE_LOG_CATEGORY_EXTERN(MyLogCategory, Log, All);

MyLogCategory.cpp 源文件定义自定义日志类别:

#include "MyLogCategory.h"

/// 在.cpp源文件中定义积极类别 MyLogCategory ,此类别在头文件.h中已经声明
DEFINE_LOG_CATEGORY(MyLogCategory);

现在你就可以在代码中使用 MyLogCategory 日志类别了:

#include "MyLogCategory.h"

void MyFunction()
{
    UE_LOG(MyLogCategory, Log, TEXT("This is a log message"));
}

当你运行程序时,在输出日志窗口中将会显示 "This is a log message" 的文本信息,并被标记为 MyLogCategory 类别的日志。通过自定义日志类别,你可以更好地组织和查找你的日志信息,并根据需要对其进行筛选和处理。

‘UE_LOG’和声明或定义Log Category的宏中提到的’Log’,’Warning’,’All’等,是ELogVerbosity中定义的枚举,具体含义可参考下面的源码。

参考资料:如何使用UE_LOG-CSDN博客

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值