UE4+C++开发-(三十)高效的调试工具,通过在屏幕上直接显示信息,帮助开发者快速验证逻辑、定位问题GEngine->AddOnScreenDebugMessage
GEngine->AddOnScreenDebugMessage(0, 5.0f, FColor::Red, TEXT("Register Successfully"), false, FVector2D(2.0, 2.0));
这行代码是 Unreal Engine 中用于在游戏屏幕上显示调试信息的常用方法,非常适合开发过程中快速查看变量值、事件触发状态等信息。
代码作用
cpp
运行
GEngine->AddOnScreenDebugMessage(0, 5.0f, FColor::Red, TEXT("Register Successfully"), false, FVector2D(2.0, 2.0));
这行代码会在游戏屏幕上显示一条条红色的调试消息 "Register Successfully",持续 5 秒,字体大小为 2.0 倍,用于直观观注册成功 " 这一事件的可视化反馈。
逐参数解析
AddOnScreenDebugMessage 是 UGameEngine 类的成员函数,参数含义如下:
-
0(int32 Key)
消息的唯一标识。如果用相同的 Key 发送新消息,会覆盖之前的消息(避免屏幕被旧消息占据)。通常用0表示临时消息,或用不同数字区分不同类型的消息。 -
5.0f(float Duration)
消息在屏幕上停留的时间(单位:秒)。这里设置为 5 秒后自动消失。 -
FColor::Red(FColor Color)
文本颜色。FColor提供了常用颜色(如Red、Green、Blue),也可自定义(如FColor(255, 165, 0)表示橙色)。 -
TEXT("Register Successfully")(const FString& DebugMessage)
要显示的调试文本内容,支持变量拼接(如FString::Printf(TEXT("分数: %d"), Score))。 -
false(bool bNewerOnTop)
消息堆叠方式:false表示新消息在旧消息下方,true表示新消息在旧消息上方。 -
FVector2D(2.0, 2.0)(FVector2D TextScale)
文本的缩放比例(X 和 Y 方向)。(2.0, 2.0)表示字体放大到 2 倍大小,(1.0, 1.0)为默认大小。
常见使用场景
-
事件触发提示
如按钮点击、状态切换等:cpp
运行
void URegisterWidget::OnRegisterSuccess() { // 注册成功时显示提示 GEngine->AddOnScreenDebugMessage(0, 3.0f, FColor::Green, TEXT("注册成功!"), false, FVector2D(1.5f, 1.5f)); } -
变量值实时显示
调试时显示变量当前值:cpp
运行
void APlayerCharacter::Tick(float DeltaTime) { Super::Tick(DeltaTime); // 实时显示玩家位置 FString PosText = FString::Printf(TEXT("位置: X=%.2f, Y=%.2f, Z=%.2f"), GetActorLocation().X, GetActorLocation().Y, GetActorLocation().Z); GEngine->AddOnScreenDebugMessage(1, 0.1f, FColor::Cyan, PosText); // 每帧刷新 }
注意事项
-
GEngine空指针检查:在某些场景下(如引擎初始化阶段),GEngine可能为nullptr,直接调用会崩溃。建议添加检查:cpp
运行
if (GEngine) { GEngine->AddOnScreenDebugMessage(...); } -
发布版本隐藏:调试消息仅在开发版本(Development)中显示,打包为发布版本(Shipping)时会自动失效,无需手动删除。
-
Key 管理:用不同 Key 区分不同类型的消息(如 0 用于系统消息,1 用于玩家状态,2 用于任务提示),避免相互覆盖。
总结:这行代码是 UE 开发中高效的调试工具,通过在屏幕上直接显示信息,帮助开发者快速验证逻辑、定位问题,是开发阶段不可或缺的辅助手段。
更多推荐



所有评论(0)