UEC++屏幕打印输出Debug信息

UE输出到屏幕

GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Cyan	, TEXT("Success!"));
GEngine->AddOnScreenDebugMessage
(
	-1, 			//  为0时,相同的信息永远只显示一次;为-1时,相同信息会按照程序执行依次显示。
	1, 			    //	显示的时间/秒
	FColor::Yellow, 	//	显示的颜色
	"Hello World!",	//	显示的信息
    true            //  最新的信息显示在顶部,默认为true
);

UE输出到日志

UE_LOG(LogTemp, Log, TEXT("Hello world!"));
FString Message = "Hello World!";	//	显示的信息
UE_LOG
(
	LogTemp, 		   //	日志的标签
	Log, 			   //	日志的类型,Log:普通,白色  Warning:警告,黄色  Error:错误,红色
	TEXT("%s"), 
    *Message	       //	输出的信息,类型为FString,%s:FString  %i:int	%f:float
)

<think> 我们正在讨论的是在Unreal Engine C++ (UEC++)中在屏幕上打印字符串"abcd"的方法。 根据引用[1],我们知道UE4中处理字符串有一些特殊要求,特别是涉及到本地化时。但是,如果只是简单地打印一个字符串(不需要本地化),我们可以使用简单的输出方法。 在UE4中,通常使用GEngine->AddOnScreenDebugMessage函数来在屏幕上打印调试信息。另外,也可以使用UE_LOG来记录日志,但日志不会直接显示在屏幕上(除非在编辑器控制台或配置了输出日志到屏幕)。 但是,用户的需求是“在屏幕上打印”,所以我们应该使用AddOnScreenDebugMessage方法。 注意:使用AddOnScreenDebugMessage需要包含必要的头文件,并且要确保有有效的GEngine指针。 具体步骤: 1. 包含头文件:通常在需要的地方包含Engine.h(或者更具体的头文件,但Engine.h通常会包含这些内容)。 2. 在需要打印的地方调用:GEngine->AddOnScreenDebugMessage(...) 函数原型(参考UE4文档): void AddOnScreenDebugMessage( int32 Key, float TimeToDisplay, FColor DisplayColor, const FString& DebugMessage, bool bNewerOnTop = true, const FVector2D& TextScale = FVector2D::UnitVector ); 参数说明: - Key: 消息的键值,如果使用-1,则每次调用都会添加一条新消息(不会覆盖),如果使用一个非负的键值,则相同键值的消息会被覆盖。 - TimeToDisplay: 消息显示的时长(秒)。 - DisplayColor: 消息的颜色(如FColor::White)。 - DebugMessage: 要显示的字符串。 - 其他参数可选。 因此,打印字符串"abcd"的代码可以写为: #include "Engine/Engine.h" // 或者 #include "Engine.h" (取决于引擎版本,较新版本可能使用前者) if (GEngine) { GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("abcd")); } 注意:TEXT宏用于包裹字符串,这是UE4中处理字符串的常用方式(为了支持Unicode和本地化,但这里我们只是简单字符串)。 另一种方法是使用UE_LOG,但它是输出到日志,而不是屏幕。不过,我们可以通过配置将日志输出屏幕(在编辑器里可以通过控制台命令打开,或者在项目设置中配置)。但用户明确要求“在屏幕上打印”,所以直接使用AddOnScreenDebugMessage更直接。 注意:在非调试版本或者发布版本中,可能需要移除这些调试信息,或者通过条件编译来控制。 根据引用[1],如果这个字符串需要本地化,我们应该使用LOCTEXT等宏,但题目只是打印"abcd",所以不需要。 因此,回答如下: </think> 在虚幻引擎 C++ (UEC++) 中,在屏幕上打印字符串 `"abcd"` 主要有两种方法: ### 方法 1:使用 `GEngine->AddOnScreenDebugMessage` (推荐) ```cpp #include "Engine/Engine.h" // 头文件必须包含 // 在需要打印的位置调用: if (GEngine) { GEngine->AddOnScreenDebugMessage( -1, // 消息ID(-1表示不覆盖) 5.0f, // 显示时长(秒) FColor::Green, // 文本颜色 TEXT("abcd") // 要显示的字符串 ); } ``` **特点**: - 直接在游戏画面叠加显示文本 - 需要确保 `GEngine` 可用(一般在游戏运行中有效) - 调试时最常用,本地化无关[^1] ### 方法 2:使用 `UE_LOG` 并启用屏幕日志输出 ```cpp // 打印日志 UE_LOG(LogTemp, Warning, TEXT("abcd")); // 在游戏控制台输入启用屏幕显示: `log LogTemp verbose` // 显示所有级别的日志 `log LogTemp off` // 关闭显示 ``` **特点**: - 默认输出到日志文件/控制台 - 需手动开启屏幕显示(通过控制台命令) - 适合持久日志记录 --- ### 注意事项 1. **字符串格式**:必须使用 `TEXT()` 宏包裹字符串,兼容UE的字符编码系统 2. **本地化**:若字符串需翻译(如多语言支持),应改用 `LOCTEXT` 宏[^1],但简单调试无需 3. **头文件**:方法1需包含 `Engine.h` 或 `Engine/Engine.h` 4. **执行位置**:需在游戏线程调用(如 `Tick()`、事件响应函数中) > 示例完整调用位置(角色类中): > ```cpp > void AMyCharacter::Tick(float DeltaTime) { > Super::Tick(DeltaTime); > if (GEngine) GEngine->AddOnScreenDebugMessage(-1, DeltaTime, FColor::White, TEXT("abcd")); > } > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UE星空

感谢打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值