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日志并进行多维度分析。
目录
打赏
0
0
0
0
18
分享
相关文章
某互联网大厂亿级大数据服务平台的建设和实践
某互联网大厂亿级大数据服务平台的建设和实践
631 0
【数据分析与可视化】Matplotlib中动态rc参数设置详解与实战(图文解释 附源码)
【数据分析与可视化】Matplotlib中动态rc参数设置详解与实战(图文解释 附源码)
560 0
成功解决 zsh: command not found
成功解决 zsh: command not found
3357 0
Unreal学习笔记2-绘制简单三角形
Unreal学习笔记2-绘制简单三角形
106 0
|
9月前
|
uniapp实现微信小程序隐私协议组件封装
uniapp实现微信小程序隐私协议组件封装
184 0
OceanBase 的安全性与合规性
【8月更文第31天】随着大数据时代的到来,数据已经成为企业的核心资产。为了保护这些宝贵的资源,不仅需要强大的技术手段来保证数据的安全,还需要满足各种法律法规的要求。OceanBase 作为一款高性能的分布式关系数据库系统,在设计之初就充分考虑了数据的安全性和合规性需求。本文将深入探讨 OceanBase 如何确保数据的安全,并介绍其符合各种法规要求的方法。
466 1
|
8月前
|
Unreal Engine C# 脚本编写浅谈
本文介绍了在 Unreal Engine 中使用 C# 编写脚本的方法,涵盖环境搭建、基础概念、常见问题及代码案例。从安装插件到处理输入事件和加载蓝图,详细讲解了如何在 Unreal Engine 中高效利用 C# 进行开发。
205 3
解决steam错误提示“您对 CAPTCHA 的响应似乎无效,请在下方重新验证您不是机器人”的解决办法
在使用 Steam 的过程中,许多新手用户可能会遇到这样一个问题:当他们试图完成注册或其他操作时,系统提示“您对 CAPTCHA 的响应似乎无效,请在下方重新验证您不是机器人。”即使多次尝试,错误提示仍然出现,阻碍了用户的下一步操作。这种情况可能令人沮丧,但了解其背后的原因和解决办法可以帮助我们顺利解决这个问题。
11824 11
浅谈分布式数据库系统
【6月更文挑战第4天】该文探讨了数据库管理系统的解决方案,建议使用Redis和MQ作为缓存和中转,减轻数据库压力。分布式系统需透明处理数据位置,解决查询执行和正确性问题。了解这些底层设计有助于应对性能挑战。
398 8
浅谈分布式数据库系统
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等