当前位置:网站首页>UE4随笔:FString、FName 与 FText
UE4随笔:FString、FName 与 FText
2022-06-27 17:57:00 【老闫在努力】
FString、FName与 FText
UE4中处理字符串的类有三种,用以应对不同的开发需求:FString、FName 和 FText,三者之间的区别为:
① FName
着重于表示名称,不区分大小写,不可更改,引擎中的资源名称都是FName类型,通过一个轻型系统重复使用字符串,FName创建时会根据内容创建一个Hash值,且同样的内容只会存储一次。通过Hash值在进行FName的查找和访问时速度较快,而在比较的时,也不需要比较字符串内容,直接比较Hash值来区分不同FName字符串。
另外两种字符串到FName的转换(特别注意的是,FText不能直接转换到FName,可先转换为FString,再转换为FName):
FString str = TEXT("Hello world~");
FText txt = LOCTEXT("keyName", "theValue");
FText txtNS = NSLOCTEXT("TextNameSpace", "keyName", "theValue");
// FString 转 FName:不可靠,丢失大小写信息
FName name1 = FName(*str);
FString strFromTxt = txt.ToString();
// FText 先转 FString,再转 FName:不可靠,丢失大小写信息,丢失本地化信息可能导致语言转换的潜在风险
FName name2 = FName(*strFromTxt);
② FString
最接近std::string,着重在于字符串的操作,提供了大量对字符串的操作接口,是三者中唯一可修改的字符串类型,也正因如此,FString对比其它两种字符串来说消耗更高,性能更低。
另外两种字符串到FString的转换:
FName name = TEXT("I am Frank~");
FText txt = LOCTEXT("keyName", "theValue");
FText txtNS = NSLOCTEXT("TextNameSpace", "keyName", "theValue");
// FName 转 FString:可靠
FString str1 = name.ToString();
// FText 转 FString:不可靠,丢失本地化信息可能导致语言转换的潜在风险
FString str2 = txt.ToString();
③ FText
着重在于显示与本地化,显示可理解玩家能直接看到的信息,本地化即多语言的处理,不可更改。相较于另外两种类型,FText会更加的臃肿,但提供了优秀的本地化功能。
另外两种字符串到FText的转换:
FString str = TEXT("Hello world~");
FName name = TEXT("I am Frank~");
// FString 转 FText:可靠
FText txt1 = FText::FromString(str);
// FName 转 FText:可靠
FText txt2 = FText::FromName(name);
需要注意的是,创建FText需要命名控件需要定义命名空间,并在编辑器开启本地化控制面板功能(Localization Dashboard):
I. 在当前源文件声明文本空间宏,在宏的声明范围内创建FText可以不需要命名空间参数,需要特别注意必须在源文件末尾取消声明:
// Source.cpp
// 声明文本空间宏
#define LOCTEXT_NAMESPACE "MyTextNameSpace"
// 宏声明范围创建FText
FText txt = LOCTEXT("keyName", "theValue");
// 必须要在合适的位置取消声明
#undef LOCTEXT_NAMESPACE
II. 在编辑器定义好命名空间,可在代码中直接使用:
// 利用已经定义好的命名空间
FText txtNS = NSLOCTEXT("TextNameSpace", "keyName", "theValue");
边栏推荐
- Mathematical derivation from perceptron to feedforward neural network
- 一种朴素的消失点计算方法
- On thread safety
- Tupu digital twin intelligent energy integrated management and control platform
- Error reported by Huada MCU Keil_ Weak's solution
- 基于STM32F103ZET6库函数跑马灯实验
- 华大单片机KEIL报错_WEAK的解决方案
- 1023 Have Fun with Numbers
- Buzzer experiment based on stm32f103zet6 library function
- 基于STM32F103ZET6库函数蜂鸣器实验
猜你喜欢

【登录界面】

“我让这个世界更酷”2022华清远见研发产品发布会圆满成功

华大单片机KEIL报错_WEAK的解决方案

GIS remote sensing R language learning see here

New Zhongda chongci scientific and Technological Innovation Board: annual revenue of 284million and proposed fund-raising of 557million

Adding, deleting, modifying and querying MySQL tables (basic)

Running lantern experiment based on stm32f103zet6 library function

Doctoral Dissertation of the University of Toronto - training efficiency and robustness in deep learning

一种朴素的消失点计算方法

Core dynamic Lianke rushes to the scientific innovation board: with an annual revenue of 170million yuan, Beifang Electronics Institute and Zhongcheng venture capital are shareholders
随机推荐
binder hwbinder vndbinder
ABAP-SM30删除前检查
Blink SQL built in functions
Error reported by Huada MCU Keil_ Weak's solution
External interrupt experiment based on stm32f103zet6 library function
A simple calculation method of vanishing point
One week technical update express of substrate and Boca 20220425 - 20220501
Oracle 获取月初、月末时间,获取上一月月初、月末时间
券商经理的开户二维码开户买股票安全吗?有谁知道啊
网络传输是怎么工作的 -- 详解 OSI 模型
华大单片机KEIL添加ST-LINK解决方法
基于STM32F103ZET6库函数蜂鸣器实验
数仓的字符截取三胞胎:substrb、substr、substring
Cucumber自动化测试框架使用
从感知机到前馈神经网络的数学推导
OpenSSL client programming: SSL session failure caused by an obscure function
redis集群系列三
CMS 执行的七个阶段
Photoshop layer related concepts layercomp layers move rotate duplicate layer compound layer
DCC888 :Register Allocation