day04
1.FString
FString可以搜索和修改并且可以与其他字符串进行比较。FString的开销比不可变字符更大。
这是因为FString保存自己的数组,而FName 和 FText 对象保存字符对象的指针
快速入门
FString TestHUDString = FString(TEXT("这是我的测试FString"))
常见问题
- 未包含头文件:忘记包含相关头文件导致编译错误。需确保包含
<CoreMinimal.h>等相关头文件。 - TEXT 宏使用不当:TEXT 宏用于将字符串字面量转换为适合 UE4 的格式,若遗漏会导致编码问题。始终使用 TEXT 宏包裹字符串字面量。
- 与 std::string 混淆:FString 和 std::string 在使用上有差异,如方法调用、内存管理等。要明确使用的是 UE4 的 FString,注意其特定的方法和规则。而且需要注意FString是支持跨平台的,而有的c++标准库可能对有些平台不支持。
转换字符串变量
TestHUDName = FName(*TestHUDString);
FString 转 FName不可靠, 因为FName不区分大小写。
TestHUDText = FText::FromString(TestHUDString);
- 虚幻中UEC++的
::是什么- 错误:混淆 “::” 和 “.” 运算符。“.” 用于访问对象的成员,而 “::” 用于作用域解析。避免方法:牢记两者用途,在使用时思考是访问对象成员还是指定作用域。
- 误解:认为 “::” 只能用于类的静态成员。实际上也可用于命名空间等。避免方法:多了解 “::” 在不同场景的使用,如全局变量、命名空间作用域等。
- 错误:在不必要时滥用 “::”。比如在类成员函数内访问成员变量,无需使用 “::”。避免方法:明确当前作用域,仅在需要明确作用域时使用。
常见场景有访问全局变量(当局部变量与全局变量同名时),调用类的静态成员,访问嵌套在其他类中的类型等。
在UEC++ 中 ,::是一个作用域解析运算符。明确指定使用的变量函数和类型是属于哪一个命名空间、类或者结构体。
2.虚幻引擎的数据类型
- 虚幻引擎的聪明之处:抹平平台棱角
- 数据类型规范方式:设置整形大小
- 整形类型:int 8、int 16、int 32、int 64
- UEC无符号整形类型:uint 8、uint 16、uint 32、uint 64
- 引擎维护数据大小:保证跨平台一致性
- 引擎特性:设计了一套与平台无关的数据类型
3. 日志记录
日志是一种实用的调试工具,可以详细说明代码的执行逻辑。可以检查函数之间传递的数据值,暴露出问题
虚幻引擎提供了多种方法来记录日志。在虚幻引擎中打开窗口(Window) > 输出日志(Output Log) 查看虚幻编辑器中的日志。

UE_LOG
它是一个宏,记录格式化消息到日志文件中。
UE_LOG(LogTemp, Warning, TEXT("Hello world"));
这是LogTemp是提供给DEFINE_LOG_CATEGORY你可以在引擎中找到这些类别名称。
可以在CoreGlobals.h中找到这些类别。
第二个是 Warning是一个日志详细级,用于讲将警告打印到控制台和日志文件中。你可以设置不同的详细程度。
第三个输入参数Text是C语言库函数printf样式中字符串文字的格式
下面是一个详细的表格,可以需要的时候再参考
| 致命(Fatal) | 始终将致命错误打印到控制台和日志文件,即使禁用日志记录,也会出现崩溃。 |
|---|---|
| 错误(Error) | 将错误打印到控制台和日志文件。Commandlet和编辑器会收集并报告错误。错误消息导致commandlet故障。 |
| 警告(Warning) | 将警告打印到控制台和日志文件。Commandlet和编辑器会收集并报告警告。 |
| 显示(Display) | 将消息打印到控制台和日志文件。 |
| 日志(Log) | 将消息打印到日志文件,但不打印到控制台。 |
| 冗长(Verbose) | 如果为给定类别启用了冗长日志记录,则将冗长消息打印到日志文件。 这通常用于详细日志记录。 |
| 极其冗长(VeryVerbose) | 将冗长消息打印到日志文件。如果启用了极其冗长日志记录,则这将用于详细日志记录,否则将产生垃圾信息输出。下面是一些日志掩码和特殊枚举值示例:VeryVerbose,NumVerbosity,VerbosityMask = 0xf,SetColor = 0x40, // not actually a verbosity, used to set the color of an output device BreakOnLog = 0x80Copy full snippet |
日志记录基础数据类型a
-
FStringUE_LOG(LogTemp, Warning, TEXT("An Actor's name is %s"), *ExampleActor->GetName());记录一条警告级别的日志,输出到某个Actor的名称。
-
浮点
UE_LOG(LogTemp, Warning, TEXT("The float value is: %f"), ExampleFloat); -
整形
UE_LOG(LogTemp, Warning, TEXT("The integer value is: %d"), ExampleInteger); -
布尔
UE_LOG(LogTemp, Warning, TEXT("The boolean value is %s"), ( bExampleBool ? TEXT("true"): TEXT("false") ));
自定义日志类型
你可以自定义日志类型并且讲它在代码中使用。如果需要有多个文件以及框架需要进行不同的分类,这个功能会非常的实用
DECLARE_LOG_CATEGORY_EXTERN(<LOG_CATEGORY>, <VERBOSITY_LEVEL>, All);
解释:
声明_日志_类别 扩展(<日志_类别>,<冗余等级>,全部)
1936

被折叠的 条评论
为什么被折叠?



