首页 > 其他分享 >Unreal学习笔记1-打印输出

Unreal学习笔记1-打印输出

时间:2022-12-31 11:33:56浏览次数:58  
标签:va 打印输出 lpszFormat szInfo 笔记 TCHAR char Unreal argList

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编码。

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

代码地址

标签:va,打印输出,lpszFormat,szInfo,笔记,TCHAR,char,Unreal,argList
From: https://www.cnblogs.com/charlee44/p/17016359.html

相关文章

  • idea2019.3启动不起来_卡在启动界面_重启也不管用的解决办法---IntelliJ Idea工作笔记
    一直卡在启动界面,起不来,实际上这种情况的的概率很小了,被我碰到了...1.其实是因为Windows的语音设置导致的.这里可以,找到控制面板,然后找到,右上角查看方式,选择,类别2.......
  • VisualStudio2015安装不上的解决方法_选择对应msi_依然报错继续选择---VisualStudio20
    这个visualstudio网上竟然有卖的,真的是太~咱啥也不说了~好了说解决办法吧;1.这里完整版大小挺大的6G多,但是这里我们找的有可能是只有3.8G左右的,这个版本的就是有文件损坏......
  • Android笔记--图形控制
    图形Drawable形状图形(其定义文件是以shape标签为根节点的XML描述文件,支持四种类型的形状)具体实现:在shape标签里面,solid指定填充的颜色,stroke指定边框颜色,corners指......
  • PyTorch学习笔记 7.TextCNN文本分类
    PyTorch学习笔记7.TextCNN文本分类​​一、模型结构​​​​二、文本分词与编码​​​​1.分词与编码器​​​​2.数据加载器​​​​二、模型定义​​​​1.卷积层​​......
  • [讲座论坛] 研究的艺术学习笔记
    ​研究的艺术学习笔记均总结自李沐在B站讲解的视频。如果你感兴趣,可以去B站观看原始视频。地址为李沐-AI论文精读。目录研究的艺术(一)TheCraftofTheResearch1.TheC......
  • [概率论与数理统计]笔记:1.2 随机事件的概率
    1.2随机事件的概率定义简单定义概率是随机事件发生的可能性大小的度量(数值)。频率可以作为概率的估计,但频率的稳定值不能作为概率的定义。一个事件的概率是由事件本......
  • 详解网络层-网络层协议【王道计算机网络笔记】
    地址解析协议ARP由于在实际网络的链路上传送数据帧时,最终必须使用MAC地址ARP协议:完成主机或路由器IP地址到MAC地址的映射。解决下一跳走哪的问题ARP协议使用过程:检查ARP......
  • 【随笔记】T507 Android10 EC200U-CN 4G Cat1 移植
    基本信息硬件信息硬件平台:T507(Android10)模组型号:EC200U-CN(Cat1)(展讯芯片)相关文件代理提供longan/kernel/linux-4.9/drivers/net/usb/qmi_wwan_q.candroid/vendor......
  • 第1章:编程入门学习笔记
    1、冯·诺依曼体系结构冯·诺依曼体系结构是现代计算机的基础。其认为计算机需要组成需满足具备输入设备、存储器、输出设备、(运算器、控制器)(CPU的两部分)。结构图:2、......
  • Java基础第一天随堂笔记
    第一天的随堂笔记API帮助文档常用快捷键Ctrl+C:复制Ctrl+V:粘贴Ctrl+A:全选Ctrl+X:剪贴Ctrl+Z:撤销Ctrl+S:保存Alt+F4:关闭窗口Shift+delete:永久删除Win+R:打开运行窗......