前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Unreal学习笔记1-打印输出

Unreal学习笔记1-打印输出

作者头像
charlee44
发布2023-01-01 10:46:54
5380
发布2023-01-01 10:46:54
举报
文章被收录于专栏:代码编写世界代码编写世界

1. 概述

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

2. 详论

2.1. 代码

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

Output.h:

代码语言:javascript
复制
#pragma once

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

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

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

Output.cpp:

代码语言:javascript
复制
#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编码。
  • 输出日志可以显示在“输出日志”面板:窗口->开发者工具->输出日志。

代码地址

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 概述
  • 2. 详论
    • 2.1. 代码
      • 2.2. 解析
      相关产品与服务
      云开发 CLI 工具
      云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档