1. Información general
En comparación con varios métodos de depuración de puntos de interrupción, estoy más acostumbrado a usar impresiones para la depuración.
2. Discusión detallada
2.1 Código
Aquí se escriben tres funciones: salida a la pantalla, salida al registro de advertencias y salida al registro de errores.
Salida.h:
#pragma once
namespace Output
{
void PrintScreen(const char* lpszFormat, ...);
void PrintLogWarning(const char* lpszFormat, ...);
void PrintLogError(const char* lpszFormat, ...);
};
Salida.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 Análisis
-
Para imprimir información de salida, creo que es más conveniente (similar
printf("个数:%d", num);
) formatear la salida en lenguaje C y usar marcadores de posición formateados para empalmar cadenas. -
La clase de cadena FString de UE administra cadenas TCHAR. TCHAR es la encapsulación de char y wchar_t. Es char en codificación local ANSI y wchar_t en codificación internacional Unicode.
-
La macro UTF8_TO_TCHAR convertirá una cadena UTF8 en una cadena TCHAR. Si desea generar chino en este código de impresión de salida, debe cambiar la codificación del archivo de código a la codificación UTF8.
-
El registro de salida se puede mostrar en el panel "Registro de salida": Ventana->Herramientas de desarrollador->Registro de salida.
Tabla de contenido: