Bootstrap

UE4C++(13):输出打印消息

10/19/2020

输出日志

打印消息到视口的左上角:

#include "Engine/Engine.h"

if(GEngine)
{
   
	GEngine->AddOnScreenDebugMessage(-1,4.0f,FColor::Red,SpawnLocation.ToString());
}
  • GEngine 全局指针
  • 第一个参数:-1表示无需更新刷新此消息,0表示刷新消息
  • 第二个参数:消息显示多久
  • 第三个参数: 消息显示的颜色
  • 第四个参数:消息内容,类型FString格式

输出消息

UE_LOG

打印消息到输出日志中

//临时标签的输出
UE_LOG(LogTemp,Log,TEXT("Message"));
  • 第一个参数:标签
  • 第二个参数:显示颜色和严重级别
  • 第三个参数:消息内容

自定义标签

打开Window->Developer Tool->Output Log查看输出内容


//.h 头文件声明标签 叫Gun
DECLARE_LOG_CATEGORY_EXTERN(Gun, Log, All);

//.cpp 
DEFINE_LOG_CATEGORY(Gun);

//输出
UE_LOG(Gun,Error,TEXT("THIS IS MESSAGE!"));

输出

输出格式TCHAR*

UE_LOG 使用和printf一样的格式化输出形式,需要输出TChar*类型

TestHUDString
UE_LOG(LogClass, Log, TEXT("This is a testing statement. %s"), *TestHUDString);

UE_LOG(LogClass, Log, TEXT("This is a testing statement. %s"), *FVectorName.ToString());

注意解析号,需要把FString类型转换成TChar 类型

例子

FString healthMessage = FString::Printf(TEXT("You now have %f health remaining."), CurrentHealth);
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, healthMessage);

//int TotalBeans = 10;
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::Printf(TEXT("TotalBeans: %d"),TotalBeans));

知识拓展

由于输出类型都是FString类型,所以如何转换成FString类型很重要

  • FString::SanitizeFloat(FloatVariable);
  • FString::FromInt(IntVariable);
  • InBool ? TEXT(“true”) : TEXT(“false”);
  • VectorVariable.ToString();
;