Choose your operating system:
Windows
macOS
Linux
FName
在 内容浏览器 中为新资源命名时,变更动态材质实例中的参数或访问骨骼网格体中的一块骨骼时需要使用 FNames 。 FName 通过一个轻型系统使用字符串。在此系统中,特定字符串即使会被重复使用,在数据表中也只存储一次。
FNames 不区分大小写。它们为不可变,无法被操作。FNames 的存储系统和静态特性决定了通过键进行 FNames 的查找和访问速度较快。 FName 子系统的另一个功能是使用散列表为 FName 转换提供快速字符串。
FText
在虚幻引擎4(UE4)中,
文本本地化
的主要组件是
FText
类。此类通过提供下列功能支持文本本地化,因此面向用户的所有文本都应使用此类:
Ftext
同时具有
AsCultureInvariant
函数(或
INVTEXT
宏),可创建非本地化的(即"语言不变")文本。这在进行如将玩家名从外部API转换为可在用户界面显示的文本等操作时,十分有用。
可使用
FText::GetEmpty()
或仅使用
FText()
,创建空白
FText
。
FString
与
FName
和
FText
不同,
FString
可以与搜索、修改并且与其他字符串比较。不过,这些操作会导致
FString
的开销比不可变字符串类更大。这是因为
FString
对象保存自己的字符数组,而
FName
和
FText
对象保存共享字符数组的指针,并且可以完全根据索引值建立相等性。
Printf
FString
函数
Printf
可以像C++中的
printf
函数那样,使用格式化参数创建
FString
对象。类似的,
UE_LOG
宏会打印一个
printf
格式化字符串到屏幕上,或者打印到日志输入和日志文件中,具体取决于当前正在运行的UE4构建类型。
注意,在使用这些字符串和转换前,你需要包含必要的头文件。你可以在各个字符串的API参考文档中,找到需要包含的头文件名单。
转换
从 |
到 |
范例 |
---|---|---|
FName |
FString |
|
FName |
FText |
FName -> FText 在一些情况下有效,但需注意 — FNames 内容不会从 FText 的"自动本地化"中受益。 |
FString |
FName |
FString -> FName 不可靠。因为 FName 不区分大小写,所以转换存在损耗。 |
FString |
FText |
FString -> FText 在一些情况下有效,但需注意 — FString 内容不会从 FText 的"自动本地化"中受益。 |
FText |
FString |
FText -> FString 不可靠。它在一些语言的转换中存在潜在损耗。 |
FText |
FName |
FText 到 FName 的转换不存在。但可先转换到 FString,再转换到 FName。 FText -> FString -> FName 不可靠。因为 FName 不区分大小写,所以转换存在损耗。 |
FString |
int32 |
|
FString |
float |
|
int32 |
FString |
|
float |
FString |
|
编码
总体而言,设置字符串变量文字时应使用 TEXT() 宏。如未指定 TEXT() 宏,将使用 ANSI 对文字进行编码,会导致支持字符高度受限。 传入 FString 的 ANSI 文字需要完成到 TCHAR 的转换(本地万国码编码),以便更高效地使用 TEXT()。
如需编码的更多信息,请查阅 字符编码 文档。