用法,按~键调出控制台,按如下输入
TraceTagAll 打开并画出全部trace的调试线
TraceTag [TagName] 打开并画出标签名为TagName的调试线
在官方shootergame示例中:输入TraceTag AIWeaponLosTrace。下面是Bot到人的Trace,可以看到除了Trace线段画出来了,命中点处还画出了红色法线。
源码如下
//World.h
#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
/** When non-'None', all line traces where the TraceTag match this will be drawn */
FName DebugDrawTraceTag;
/** When set to true, all scene queries will be drawn */
bool bDebugDrawAllTraceTags;
bool DebugDrawSceneQueries(const FName& UsedTraceTag) const
{
return (bDebugDrawAllTraceTags || ((DebugDrawTraceTag != NAME_None) && (DebugDrawTraceTag == UsedTraceTag))) && IsInGameThread();
}
#endif
//World.cpp
bool UWorld::Exec( UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar )
{
#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
if( FParse::Command( &Cmd, TEXT("TRACETAG") ) )
{
return HandleTraceTagCommand( Cmd, Ar );
}
else if( FParse::Command( &Cmd, TEXT("TRACETAGALL")))
{
bDebugDrawAllTraceTags = !bDebugDrawAllTraceTags;
return true;
}
else
#endif
bool UWorld::HandleTraceTagCommand( const TCHAR* Cmd, FOutputDevice& Ar )
{
#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
FString TagStr;
FParse::Token(Cmd, TagStr, 0);
DebugDrawTraceTag = FName(*TagStr);
#endif
return true;
}