Log日志系统
先打开虚幻编辑器,新建一个c++基础项目
1.UE_LOG宏
基本输出使用:
UE_LOG(LogTemp,Log,TEXT("xxxx"));
参数1:日志类型
参数2:级别,Log,Display,Warning,Error
参数3:具体的内荣
例子:
UE_LOG(LogTemp,Warning,TEXT("int 输出%d"),123);
UE_LOG(LogTemp,Warning,TEXT("字符输出%s"),TEXT("gogo"));
UE_LOG(LogTemp,Warning,TEXT("浮点输出%f"),3.14);
FVector vec(1,2,3);
UE_LOG(LogTemp,Warning,TEXT("向量输出%s"),*vec.ToString);
控制台输出
在运行的时候,并且鼠标浸入运行的界面,然后按~可以调出控制台(注意一下,二下)
格式:
GetWorld()->GetFirstPlayerController()->ClientMessage(TEXT("xxxx"));
向屏幕输出输出
GEngine->AddOnScreenDebugMessage(-1,10.0f,FColor::Red,Text("xxx"));
参数1:唯一的Key,一般用-1代表不会覆盖信息,只是向屏幕输出新的信息。
参数2:显示的时间
自定义LOG类别
.h 文件中DECLARE_LOG_CATEGORY_EXTERN(LogCoolGameMode,Log,All);
.cpp DEFINE_LOG_CATEGORY(LogCoolGameMode);
.cpp 在任意地方使用UE_LOG("出入自己定义的日志的名字",Log,TEXT(""));
控制LOG类型显示
Log LogName off // 关闭
Log LogName Log // 打开
MessageLog 窗口输出
MessageLog 窗口使用Ftex.要使用Ftext.要使用Ftext 必须先定义一个Namespace,使用
#define LOCTEXT_NAMESPACE "XXXX"
在工程项目头文件中自定义一个Log模块名称
extern FName LoggerName; 定义一个Log模块的名称
在GameMode.cpp中实现定义
FName LoggerName("XXXX");
注册自定义Log 模块
在LogGameMode 定义一个初始化方法完成注册
void XXXX::InitMessageLogType(FName loggerName)
{
FMessageLogModule&MessageLogModule=
FModuleManager::LoadModuleChecked<FMessageLogModule>("MessageLog");
FMessageLogInitializationOptions InitOptions;
InitOptions.bShowPages=true;
InitOptions.bShowFilters=true;
FText LogListingName=FTEXT("CoolGame's Log Listing");
MessageLogModule.RegisterLogListing(loggerName,LogListingName,InitOptions);
}
向MessageLog输出
构造一个FMessageLog(LoggerName),调用输出,方法如下:
FMessageLog(LoggerName).Info(FTEXT("提示信息));
FMessageLog(LoggerName).Warning(FTEXT("警告信息"));
FMessageLog(LoggerName).Error(FTEXT("严重错误"));