UE5-PrintString蓝图节点异常
如题,笔主使用UE5.3.2源码编译版引擎时发现蓝图节点Print String在调试多人游戏会出现异常,表现在Client的序号显示异常,不区分Client 1 或者 Client 2。
锁定源码发现出现了这个警告:
查看FPlayInEditor是写了到int32的转换函数的。
于是修改源代码,强制转化成int32。然后重新编译,在启动编辑器就解决问题了。不知道Launcher版本是否存在这个问题。
这里在分享一个UE_LOG的改造,能够增加Net前缀。将下面代码粘贴到项目中即可使用。
#define NetUE_LOG(CategoryName, Verbosity, Format, ...) \
FString __BasicString = FString::Printf(Format, ##__VA_ARGS__ ); \
FString __NetString = (!GWorld ? FString("") \
: GWorld->GetNetMode() == NM_Client ? FString("Client ") + FString::FromInt(GPlayInEditorID) + FString(": ") \
: GWorld->GetNetMode() == NM_ListenServer ? FString("Listen Server: ") \
: GWorld->GetNetMode() == NM_DedicatedServer ? FString("Dedicated Server: ") \
: FString(""));\
FString __FinalString = __NetString + __BasicString;\
UE_LOG(CategoryName, Verbosity, TEXT("%s"), *__FinalString);
使用方法和UE_LOG一致,这个代码也比较好理解。