2023-06-29 11:55:02 +08:00

166 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: UE_Log
date: 2022-08-31 09:40:26
excerpt:
tags:
rating: ⭐
---
说明本文为Wiki上的RAMA大神文章的大致翻译
## 显示日志
- 在游戏模式下,你需要在游戏的快捷方式后面加 -Log才会在游戏中显示。
- 如果想在游戏中看到需要到Engin.ini中修改参数添加"GameCommandLine=-log如果没有则需要按~,输入-Log命令开启。
## QuickStart
UE_LOG(LogTemp, Warning, TEXT("Your message"));
不用设置标签,简单快速。
## CustomTag
在你的游戏头文件中进行声明:
```c++
//General Log
DECLARE_LOG_CATEGORY_EXTERN(YourLog, Log, All);
//Logging during game startup
DECLARE_LOG_CATEGORY_EXTERN(YourInit, Log, All);
//Logging for your AI system
DECLARE_LOG_CATEGORY_EXTERN(YourAI, Log, All);
//Logging for Critical Errors that must always be addressed
DECLARE_LOG_CATEGORY_EXTERN(YourCriticalErrors, Log, All);
```
这样输出的Log你就可以知道是哪个部分的这也是UE_Log很有用的原因。
之后在你的游戏Cpp文件中定义
```c++
//General Log
DEFINE_LOG_CATEGORY(YourLog);
//Logging during game startup
DEFINE_LOG_CATEGORY(YourInit);
//Logging for your AI system
DEFINE_LOG_CATEGORY(YourAI);
//Logging for Critical Errors that must always be addressed
DEFINE_LOG_CATEGORY(YourCriticalErrors);
```
## Log格式化
### Log Message
```c++
//"This is a message to yourself during runtime!"
UE_LOG(YourLog,Warning,TEXT("This is a message to yourself during runtime!"));
```
### Log an FString
```c++
 %s strings are wanted as TCHAR* by Log, so use *FString()
//"MyCharacter's Name is %s"
UE_LOG(YourLog,Warning,TEXT("MyCharacter's Name is %s"), *MyCharacter->GetName() );
```
### Log an Int
```c++
//"MyCharacter's Health is %d"
UE_LOG(YourLog,Warning,TEXT("MyCharacter's Health is %d"), MyCharacter->Health );
```
### Log a Float
```c++
//"MyCharacter's Health is %f"
UE_LOG(YourLog,Warning,TEXT("MyCharacter's Health is %f"), MyCharacter->Health );
```
### Log an FVector
```c++
//"MyCharacter's Location is %s"
UE_LOG(YourLog,Warning,TEXT("MyCharacter's Location is %s"),
    *MyCharacter->GetActorLocation().ToString());
```
### Log an FName
```c++
//"MyCharacter's FName is %s"
UE_LOG(YourLog,Warning,TEXT("MyCharacter's FName is %s"),
    *MyCharacter->GetFName().ToString());
```
### Log an FString,Int,Float
```c++
//"%s has health %d, which is %f percent of total health"
UE_LOG(YourLog,Warning,TEXT("%s has health %d, which is %f percent of total health"),
    *MyCharacter->GetName(), MyCharacter->Health, MyCharacter->HealthPercent);
```
## Log的颜色设置
```c++
//"this is Grey Text"
UE_LOG(YourLog,Log,TEXT("This is grey text!"));
//"this is Yellow Text"
UE_LOG(YourLog,Warning,TEXT("This is yellow text!"));
//"This is Red Text"
UE_LOG(YourLog,Error,TEXT("This is red text!"));
```
可以看得出第二个参数是是用来控制颜色的。
## 向客户端传递信息(网络模式):
```c++
PlayerController->ClientMessage("Your Message");
```
命令行命令以及Engine.ini配置
Log conventions (in the console, ini files, or environment variables)
[cat] = a category for the command to operate on, or 'global' for all categories.
标签没有设置就显示所有的Log
[level] = verbosity level, one of: none, error, warning, display, log, verbose, all, default
关卡显示某某关卡的Log
At boot time, compiled in default is overridden by ini files setting, which is overridden by command line
Log console command usage
Log list - list all log categories
Log list [string] - list all log categories containing a substring
Log reset - reset all log categories to their boot-time default
Log [cat] - toggle the display of the category [cat]
Log [cat] off - disable display of the category [cat]
Log [cat] on - resume display of the category [cat]
Log [cat] [level] - set the verbosity level of the category [cat]
Log [cat] break - toggle the debug break on display of the category [cat]
### Log command line
- LogCmds=\"[arguments],[arguments]...\"           - applies a list of console commands at boot time
- LogCmds=\"foo verbose, bar off\"         - turns on the foo category and turns off the bar category
### Environment variables
Any command line option can be set via the environment variable UE-CmdLineArgs
set UE-CmdLineArgs=\"-LogCmds=foo verbose breakon, bar off\"
### Config file
In DefaultEngine.ini or Engine.ini:
```ini
[Core.Log]
global=[default verbosity for things not listed later]
[cat]=[level]
foo=verbose break
```
## 其他
Rama后面的一篇文章提供了显示代码行号、函数名称、类名等功能
https://wiki.unrealengine.com/Logs,_Printing_the_Class_Name,_Function_Name,_Line_Number_of_your_Calling_Code!