You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unreal Engine中如何正确打印输出FVector类型日志

Unreal Engine FVector类型日志打印正确方案

原有代码无法正确输出FVector日志的核心原因:UE_LOG遵循类printf的格式化规则,%f占位符仅支持接收单个浮点类型参数,而FVector是包含X、Y、Z三个浮点成员的结构体,直接传入会触发编译报错,或输出乱码、错误数值。

可用实现方案

  • 方案1:手动拆分分量打印(全UE版本通用,自定义格式自由度最高)
    直接读取FVector的X、Y、Z三个成员,分别对应%f占位符即可,支持自定义输出精度,示例代码:

    FVector ActorLocation = GetActorLocation();
    // 示例中%.2f表示保留2位小数输出,可按需调整精度
    UE_LOG(LogTemp, Log, TEXT("Actor location: X=%.2f, Y=%.2f, Z=%.2f"), 
        ActorLocation.X, ActorLocation.Y, ActorLocation.Z);
    
  • 方案2:调用FVector内置的ToString()方法(代码最简洁)
    FVector自带格式化字符串方法,会自动按X=... Y=... Z=...的固定格式拼接坐标内容,注意%s占位符需要匹配TCHAR*类型,必须在FString返回值前加*解引用获取底层字符串指针,示例代码:

    FVector ActorLocation = GetActorLocation();
    UE_LOG(LogTemp, Log, TEXT("Actor location: %s"), *ActorLocation.ToString());
    

注意事项:
所有UE字符串类型(FString、FName、FText)传给%s占位符时,都必须加*取底层TCHAR指针,直接传对象本身会出现编译报错或输出乱码。
不要依赖结构体内存布局直接给%f传FVector对象,不同平台的调用约定、内存对齐规则存在差异,这种写法会导致输出值错误,甚至触发运行时崩溃。

内容的提问来源于stack exchange,提问作者stoff robert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 15:57:12