Unreal学习笔记1-打印输出

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Unreal学习笔记1-打印输出

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, ...);
};
CPP 复制 全屏

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-绘制简单三角形

分类: Unreal Engine

标签: Unreal Engine , 打印 , UE4 , 输出


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
人工智能 数据可视化 机器人
【Python】Python实现五子棋游戏(带可视化界面)【独一无二】
【Python】Python实现五子棋游戏(带可视化界面)【独一无二】
108 0
|
4月前
|
存储 算法 C++
【Qt应用开发】复刻经典:基于Qt实现Windows风格计算器(加减乘除、删除、归零功能全解析)
在Qt中,"栈"的概念主要体现在两个层面:一是程序设计中的数据结构——栈(Stack),二是用户界面管理中的QStackedWidget控件。下面我将分别简要介绍这两个方面:
143 4
|
5月前
|
缓存 安全 开发工具
程序与技术分享:Directx11学习笔记【三】第一个D3D11程序
程序与技术分享:Directx11学习笔记【三】第一个D3D11程序
404 0
|
6月前
|
Python
Python 教程之控制流(6)打印金字塔图案的程序
Python 教程之控制流(6)打印金字塔图案的程序
90 0
|
11月前
|
数据安全/隐私保护 索引 Python
Python 程序的输出 | 第十九套
Python 程序的输出 | 第十九套
56 0
|
Python
【Python】pprint可以让你的字典打印信息更加美观
【Python】pprint可以让你的字典打印信息更加美观
107 0
|
Python
python小游戏——像素鸟代码开源
python小游戏——像素鸟代码开源
243 0
python小游戏——像素鸟代码开源
|
存储 文件存储
消息窗体的输入输出,断点调试方法【VB学习笔记2020课堂版02】
消息窗体的输入输出,断点调试方法【VB学习笔记2020课堂版02】
102 0
消息窗体的输入输出,断点调试方法【VB学习笔记2020课堂版02】
|
Python Windows
Python colorama | 详解终端漂亮的彩色打印怎么实现的
命令行可以按照我们的设定完成相应的工作,相比 GUI 界面程序,无需花费大量时间设计 GUI 界面。但要使命令行程序更吸引人,仅使用普通的打印功能是无法实现的。
1073 0
Python colorama | 详解终端漂亮的彩色打印怎么实现的
|
vr&ar 图形学
【Unity3D 灵巧小知识点】☀️ | Unity控制台 输出打印不同颜色的字体
Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。 也可以简单把 Unity 理解为一个游戏引擎,可以用来专业制作游戏!
【Unity3D 灵巧小知识点】☀️ | Unity控制台 输出打印不同颜色的字体