Unreal学习笔记1-打印输出

1. 概述

相比各种打断点调试的办法,还是更习惯使用打印输出来进行调试。

2. 详论

2.1. 代码

这里写了三个函数:分别是输出到屏幕,输出到警告日志,输出错误日志。

Output.h:

#pragma once

namespace Output
{
	void PrintScreen(const char* lpszFormat, ...);

	void PrintLogWarning(const char* lpszFormat, ...);

	void PrintLogError(const char* lpszFormat, ...);
};

Output.cpp:

#include "Output.h"

#include <Engine.h>
#include <Logging/LogMacros.h>

#include <array>

namespace Output
{
	void PrintScreen(const char* lpszFormat, ...)
	{
		char szInfo[512];

		va_list argList;
		va_start(argList, lpszFormat);
		vsnprintf(szInfo, 512, lpszFormat, argList);
		va_end(argList);

		//GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString::Printf(TEXT("Print Message this is %f"), 2.3f));
		GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString(UTF8_TO_TCHAR(szInfo)));
	}

	void PrintLogWarning(const char* lpszFormat, ...)
	{
		char szInfo[512];

		va_list argList;
		va_start(argList, lpszFormat);
		vsnprintf(szInfo, 512, lpszFormat, argList);
		va_end(argList);
		
		UE_LOG(LogTemp, Warning, TEXT("%s"), UTF8_TO_TCHAR(szInfo));
	}

	void PrintLogError(const char* lpszFormat, ...)
	{
		char szInfo[512];

		va_list argList;
		va_start(argList, lpszFormat);
		vsnprintf(szInfo, 512, lpszFormat, argList);
		va_end(argList);

		GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, FString(UTF8_TO_TCHAR(szInfo)));
		UE_LOG(LogTemp, Error, TEXT("%s"), UTF8_TO_TCHAR(szInfo));
	}
	
};

2.2. 解析

  • 打印输出信息我认为还是C语言的格式化输出比较方便(类似printf("个数:%d", num);),使用格式化占位符来拼接字符串。

  • UE的字符串类FString管理的是TCHAR字符串,TCHAR是char与wchar_t的封装,在ANSI本地编码中是char,在Unicode国际化编码中是wchar_t。

  • UTF8_TO_TCHAR宏会将UTF8字符串转换成TCHAR字符串。这段输出打印代码如果要输出中文,需要把代码文件的编码更改为UTF8编码。

  • 输出日志可以显示在“输出日志”面板:窗口->开发者工具->输出日志。

下一篇

代码地址


目录:

  1. Unreal学习笔记1-打印输出
  2. Unreal学习笔记2-绘制简单三角形
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

charlee44

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值