ue4 log

在Unreal Engine 4中,打Log很方便,可以使用宏:

  1. UE_LOG(LogTemp, Warning, TEXT("Your message"));  

但是使用之前需要先定义Log Category,Category会在Log中体现出来,以便在茫茫Log中更容易区分其作用或所属模块。

如果想定义只在一个CPP文件中使用的Category,不希望被其他类使用,可以定义一个Static的Category:

  1. DEFINE_LOG_CATEGORY_STATIC(CategoryName,Log,All);  

如果想定义一个‘Public’的Category,并且在全局生效,不管是static函数还是其他类都可以使用,就需要在头文件中声明一个Category,并在CPP中定义,每个用到的CPP文件都需要include该头文件:

  1. // in A.h  
  2. DECLARE_LOG_CATEGORY_EXTERN(CategoryName, Log, All) // 声明一个Category为extern,避免多个文件使用此头文件时重复声明  
  3.    
  4. // in A.cpp  
  5. #include "A.h"  
  6. DEFINE_LOG_CATEGORY(CategoryName) // 定义该Category,全局仅需一份  
  7.    
  8. // in B.cpp  
  9. #include "A.h" // 由于之前声明为extern,使用者引入头文件即可使用在A.cpp中的定义  

如果想给某个定义一个专属的Category,可以使用:

  1. // in A.h  
  2. classA  
  3. {  
  4.     DECLARE_LOG_CATEGORY_CLASS(CategoryName,Log,All);  
  5. };  
  6.    
  7. // in A.cpp  
  8. DEFINE_LOG_CATEGORY_CLASS(A,CategoryName);  

定义好Log Category之后就可以使用UE_LOG了,除了最前面例子中的用法,UE_LOG的用法和C中的printf类似,支持字符串Format,例如:

  1. UE_LOG(CategoryName,Warning,TEXT("MyCharacter's Health is %d"), MyCharacter->Health );  
  2. UE_LOG(CategoryName,Warning,TEXT("MyCharacter's Health is %f"), MyCharacter->Health );  
  3. UE_LOG(CategoryName,Warning,TEXT("MyCharacter's Name is %s"), *MyCharacter->GetName() ); 
posted @ 2017-09-14 16:46  00000000O  阅读(644)  评论(0编辑  收藏  举报