不需要包含额外的头文件

 

在.h文件中直接加入

DECLARE_LOG_CATEGORY_EXTERN(INPUT, Log, All);

不需要写在类声明中,目测“DECLARE_LOG_CATEGORY_CLASS”是写在类中,只在当前类中有效的Category描述(?)。

这步大概是为了扩展之后在CPP文件中定义的Category可以在其他的方法中使用(?)

 

在.cpp文件中加入

DEFINE_LOG_CATEGORY(INPUT);

根据命名应该是定义一个Category。

我直接写在了外面,不知道写在某个函数里有没有用。VS2015对宏编译的支持很蛋疼。

 

然后可以使用UE_LOG()宏来输出信息。

UE_LOG(INPUT, Log, TEXT("New Location is %f\t%f\t%f\n"), NewLocation.X, NewLocation.Y, NewLocation.Z);

第一个参数是你之前定义的Category,

第二个参数是输出方法,Log是日志,Warning是警示,Error是错误。具体来说就是打印出来的颜色不一样,Log是灰的,Warning是绿的,Error是红的。

第三个参数是输出格式,注意TEXT()这个宏,好像是用于本地化的,直接写字符串会被提示错误的。

第四个参数到第N个参数,用于匹配第三个参数的格式中的占位符的。

 

 

待补充:定义输出颜色的方法

参考资料:Logs, Printing Messages To Yourself During Runtime

 

 

以及,其实可以直接用printf函数进行输出的(逃),我就是想研究一下UE_LOG而已

 

 

-------------

2017年7月27日更正:

.h文件和.cpp文件中都需要使用;结尾。

使用宏的时候是不需要分号的,即直接使用宏字符串代替某个字符串。

但是宏替换的代码需要以分号结尾,所以需要加分号。

仔细看了官方文档的代码以及查了一下宏的用法得到了如上结论,都是猜测,不对正确性负责。

 

PS:宏就是在预编译的时候用其他字符串代替某个字符串。#,##这种高级用法网上一大堆,不扩展。

posted on 2017-07-25 17:42  独步倾城  阅读(1851)  评论(0编辑  收藏  举报