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
相关产品推荐
相关产品推荐

