1. 在Editor的【输出日志】窗口输出日志
UE_LOG(日志种类Category, 日志级别Verbosity, 日志内容Content);
(1)
UE_LOG(LogTemp, Log, TEXT("Hit, hit"));
UE_LOG(LogTemp, Warning, TEXT("Hit, hit"));
UE_LOG(LogTemp, Error, TEXT("Hit, hit"));
根据日志级别的不同,特意用不同的颜色打印日志,以方便查看,当日志数量过多,还可以根据日志种类,对日志进行过滤。
除了使用Unreal预定义的全局变量日志种类输出,我们还可以自定义日志种类
例如:射线检测,输出碰撞到的物体名称
AActor* Actor = Hit.GetActor();
if (Actor)
{
UE_LOG(LogTemp, Warning, TEXT("Line Hit is %s"), *Actor->GetName());
}
错误FString 作为可变参数函数的参数的不可移植用法
AACtor& InActor;
UE_LOG(LogTemp, Warning, TEXT("Actor: %s ), *InActor.GetName());
注意 * .
(2)
GLog->Log("Hello");
GLog->Logf("Hello");
如果,在输出Log的下一行代码挂掉,则可能无法正确输出Log,因为Log的输出有一个缓存。则应该更改为
GLog->Log("Hello");
GLog->Flush();
2. 在游戏屏幕上显示日志
AddOnScreenDebugMessage函数
GEngine是全局引擎变量,我们使用它的AddOnScreenDebugMessage函数来在游戏屏幕上打印调试信息。
该函数第一个参数是调试输出的位置,填写-1表示总在原来的调试信息上方。
第二个参数是字体大小,第三个参数是字体颜色,第四个参数是要打印的字符串,这里用FromInt函数将Int转换FString。
GEngine->AddOnScreenDebugMessage(-1, 40, FColor::White, FString::FromInt(array[index]));
3. 在关卡中显示日志
DrawDebugString函数
DrawDebugLine函数 --- 画辅助线
比如我们在射击游戏这里标注一下子弹飞行过程中碰撞到了那些位置。
添加这个函数后,就会在子弹碰撞的地方都标上设定的字样,帮助开发者定位子弹的运动轨迹。
调用上述函数时,需添加头文件
#include "DrawDebugHelpers.h"
结论:
在项目开发中,如果是想要实时输出LOG,则应该显示在屏幕,特别是Tick中,不可添加LOG。
非实时的LOG可以输出在日志中, 一般选择在交互事件发生后,输出LOG。
注意:
网友评论