UE5 c++打印日志

cpp 复制代码
void AItem::BeginPlay()
{
	Super::BeginPlay();
	UE_LOG(LogTemp,Warning,TEXT("beginPlay"));//打印到日志面板
}
void AItem::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
	UE_LOG(LogTemp, Warning, TEXT("DeltaTime:%f"), DeltaTime);//打印数字,在可变参数里追加要打印的数字,使用%f规定第一个参数为float类型  %d整数  %u无符号整数
}

UE_LOG:打印宏,打印日志到日志面板

参数一:日志的分类

可选级别:

LogTemp,临时日志

LogActor,Actor相关

LogCharacter,角色相关

LogUI,UI日志

LogAnimation,动画相关

LogGameplay,游戏逻辑

参数二:日志的级别

Dispaly:白色

Warning:黄色

Error:红色

Log:日志

Verbose:详细日志

VerVerbose:最详细的日志

参数3:要打印的内容

参数4...:可变参数

**GEngine->AddOnScreenDebugMessage() 打印日志到屏幕 **

cpp 复制代码
void AItem::BeginPlay()
{
	Super::BeginPlay();
	if (GEngine)//在屏幕上打印
	{
		GEngine->AddOnScreenDebugMessage(1,60.f,FColor::Cyan,FString("Item_OnScreen Message"));
	}
}
void AItem::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
	if (GEngine)
	{
		//打印带参数的字符串,使用FString的Printf方法
		FString message = FString::Printf(TEXT("DeltaTime:%f"), DeltaTime);
		GEngine->AddOnScreenDebugMessage(1, 60.f, FColor::Cyan, message);
		GEngine->AddOnScreenDebugMessage(2, 60.f, FColor::Cyan, 	FString::Printf(TEXT("DeltaTime:%f"), DeltaTime));
	}
}

GEngine是一个指针,通常会在Beginpaly前就初始化完成,但是为了规范起见,应该用if()检查指针是否为0,为0则为空指针

参数1:日志的key,同一个key不会重复显示

参数2:显示的时长

参数3:颜色 Cyan是青色

参数4:要打印的字符串,只能用FString生成

打印一个字符串参数

cpp 复制代码
void AItem::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
	if (GEngine)
	{
		FString Name = GetName();//Actor自带的方法,获取displayName
		FString message = FString::Printf(TEXT("DeltaTime:%s"), *Name);//注意字符串的*不是解析指针,UE对这里进行了重载,*的实际作用是获取一个C风格的字符串,即char[]
		GEngine->AddOnScreenDebugMessage(1, 60.f, FColor::Cyan, message);
	}
}
相关推荐
不会写DN2 小时前
php 如何使用mysqli连接mysql
开发语言·mysql·php
赫瑞2 小时前
Java中的进阶最长上升子序列——LIS
java·开发语言
吴梓穆2 小时前
UE5 C++ 绘制图形调试宏
开发语言·c++·ue5
skywalk81632 小时前
windows10安装python3.14
开发语言·python
2501_908329852 小时前
C++中的装饰器模式
开发语言·c++·算法
x***r1512 小时前
Dev C++ 6.5安装与配置教程 Windows版:解压+管理员运行+自定义路径+中文设置指南
开发语言·c++
南 阳2 小时前
Python从入门到精通day58
开发语言·python
楚Y6同学2 小时前
为什么 C++ 要设计函数重载
开发语言·c++
steins_甲乙2 小时前
【无标题】
开发语言·c++