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 类的成员函数,参数含义如下:

  1. 0int32 Key
    消息的唯一标识。如果用相同的 Key 发送新消息,会覆盖之前的消息(避免屏幕被旧消息占据)。通常用 0 表示临时消息,或用不同数字区分不同类型的消息。

  2. 5.0ffloat Duration
    消息在屏幕上停留的时间(单位:秒)。这里设置为 5 秒后自动消失。

  3. FColor::RedFColor Color
    文本颜色。FColor 提供了常用颜色(如 RedGreenBlue),也可自定义(如 FColor(255, 165, 0) 表示橙色)。

  4. TEXT("Register Successfully")const FString& DebugMessage
    要显示的调试文本内容,支持变量拼接(如 FString::Printf(TEXT("分数: %d"), Score))。

  5. falsebool bNewerOnTop
    消息堆叠方式:false 表示新消息在旧消息下方,true 表示新消息在旧消息上方。

  6. FVector2D(2.0, 2.0)FVector2D TextScale
    文本的缩放比例(X 和 Y 方向)。(2.0, 2.0) 表示字体放大到 2 倍大小,(1.0, 1.0) 为默认大小。

常见使用场景

  1. 事件触发提示
    如按钮点击、状态切换等:

    cpp

    运行

    void URegisterWidget::OnRegisterSuccess()
    {
        // 注册成功时显示提示
        GEngine->AddOnScreenDebugMessage(0, 3.0f, FColor::Green, TEXT("注册成功!"), false, FVector2D(1.5f, 1.5f));
    }
    
  2. 变量值实时显示
    调试时显示变量当前值:

    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 开发中高效的调试工具,通过在屏幕上直接显示信息,帮助开发者快速验证逻辑、定位问题,是开发阶段不可或缺的辅助手段

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐