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日志并进行多维度分析。
相关文章
|
2月前
|
数据采集 前端开发 Python
Python pygame 实现游戏 彩色 五子棋 详细注释 附源码 单机版
Python pygame 实现游戏 彩色 五子棋 详细注释 附源码 单机版
74 0
|
数据可视化 Python
【100天精通python】Day39:GUI界面编程_PyQt 从入门到实战(下)_图形绘制和动画效果,数据可视化,刷新交互
【100天精通python】Day39:GUI界面编程_PyQt 从入门到实战(下)_图形绘制和动画效果,数据可视化,刷新交互
269 0
|
Linux C++ iOS开发
小秘技:怎样用python来获取各种DOS命令显示的内容?注意不是返回值哦!
小秘技:怎样用python来获取各种DOS命令显示的内容?注意不是返回值哦!
143 0
|
Python
python植物大战僵尸二十三之添加音乐
python植物大战僵尸二十三之添加音乐
94 0
|
Python
如何用python模拟鼠标和键盘的操作
如何用python模拟鼠标和键盘的操作
1808 0
|
前端开发 Java 容器
GUI相关内容及案例贪吃蛇实现【上】
简介 GUI的核心技术:Swing AWT 因为界面不美观 需要jre环境 学习的原因: 写出一些小工具 工作时维护到swing界面的概率极小 了解MVC架构,了解监听! AWT AWT介绍 包含了很多类和接口!GUI! 元素:窗口,按钮,文本框 java.awt 组件和容器 创建窗口组件 impo
|
前端开发 Java 数据安全/隐私保护
GUI相关内容及案例贪吃蛇实现 【下】
简介 GUI的核心技术:Swing AWT 因为界面不美观 需要jre环境 学习的原因: 写出一些小工具 工作时维护到swing界面的概率极小 了解MVC架构,了解监听! AWT AWT介绍 包含了很多类和接口!GUI! 元素:窗口,按钮,文本框 java.awt 组件和容器 创建窗口组件 impo
|
Python
Python零基础学习笔记(三十三)—— 窗体的控制
这里需要安装和下载pywin32导入相应的库 同时需要下载spy++工具来获取窗口句柄和标题 打开qq执行代码就有效果了 控制窗体的显示和隐藏 ''' import time import win32con import win32gui ''' #找出窗体的编号 QQWin = win32gui.
1203 0
|
图形学
Unity游戏开发常用的一些函数用法
Unity游戏开发常用函数 本文提供全流程,中文翻译。 Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例) Chinar —— 心分...
1780 0
|
Python
发现了一个非常棒的pyqt5的例子集
发现了一个非常棒的pyqt5的例子集 https://github.com/892768447/PyQt 各种各样的PyQt测试和例子 [Python3.4.4 or Python3.5][PyQt5] 1.
3938 0