UE FString, FName ,FText 三者转换,再次学习,官方文档理解

一.整体理解,细节查看官方文档

1.UE中的编码 一般分为

  1. ANSI ; 2. UTF-8; 3.UE自己的编码(UE所有字符串FString,TCHAR:UTF-16格式存储在内存中); 4. 二进制

三个转化宏,宏的生命周期短,主要作为函数参数。它基本能胜任上述123的互相编码转换

虚幻引擎字符编码 | 虚幻引擎 5.7 文档 | Epic Developer Community

网络端,同步需要解码,编码来支持

2.FString

虚幻引擎中的FString | 虚幻引擎 5.7 文档 | Epic Developer Community

开头FString 更万能,并且它本身有TChar* 类型的数组

和其它第三方通信,需要转换编码。加密处理等。

TEXT()宏可以,增加字符串高度。方便TCHAR的转换

FString 可以转换为 其它类型变量 很全,官方文档总结的很清楚。float ,int ,bool 等

FString 是TCHAR* 数组,所以很多方法和TArray有类似。

两种典型的打日志,都用的FString:UE_LOG , 和 AddOnScreenDebugMessage

操作字符串,拼接切割从左从右读等,在网络传输时解析,很有用。

转换宏编码,小心生命周期

3.FName

虚幻引擎中的FName | 虚幻引擎 5.7 文档 | Epic Developer Community

用于资产命名,典型的场景有 改动态实例的参数,访问骨骼网格体的骨骼,当然骨骼Socket也用FName。不区分大小写,占唯一内存。作为索引组合存储在唯一字符串和实例编号的表格中

== 好,它不执行字符串的对比,而是对比索引中的数值,毕竟它们是唯一的,节约了CPU开销。

4.FText

虚幻引擎中的FText | 虚幻引擎 5.7 文档 | Epic Developer Community

UI,本地化经常用到。

二.转化,很早之前也写过转换的文章。UE5 C++学习笔记 FString FName FText相互转换_fstring 转 fname-CSDN博客可以结合看

cpp 复制代码
void AWXStringActor::InitialString()
{
	FString TestString = TEXT("This is a Test");

	//这下好记住了,FString 很万能
	//FSring -> FName
	FName TestName = FName(*TestString);
	//FString->FText
	FText TestText = FText::FromString(TestString);

	//FName -> FString
	FString BackString = TestName.ToString();

	//FText -> FString
	FString BackString2 = TestText.ToString();

	// Name 可直接 FText ,单Text 却要 经过FString中间商
	//
	//FName->FText
	//FText BackText =FText::FromString(TestName.ToString());饶了不需要
	FText BackText2 = FText::FromName(TestName);

	// FText-> FName
	FName TestName2 = FName(TestText.ToString());
	int32 a = 1;

}
相关推荐
小雨下雨的雨28 分钟前
井字棋AI机器人实现详解 - Minimax算法实战-鸿蒙PC Electron框架完成
前端·人工智能·算法·华为·electron·鸿蒙
方便面不加香菜1 小时前
Linux--基础IO(一)
linux·运维·服务器
ZC跨境爬虫4 小时前
跟着 MDN 学JavaScript day_7:数学运算与逻辑判断实战测试
开发语言·前端·javascript·学习·ecmascript
fangdengfu1234 小时前
ES分析系统各个服务日志占用量
java·前端·elasticsearch
凌云拓界4 小时前
文件管理:让AI安全操作你的电脑 ——CogitoAgent开发实战(三)
javascript·人工智能·架构·开源·node.js
凌云拓界5 小时前
联网能力:让AI看见更广阔的世界 ——CogitoAgent开发实战(四)
javascript·人工智能·架构·node.js·创业创新
mounter6256 小时前
现代 Linux 内存管理的演进与变革:从传统 LRU 到多代架构 MGLRU
linux·服务器·kernel
JustHappy6 小时前
古法编程秘籍(六):程序到底是怎么跑起来的?从 IO 到中断,一次讲明白
前端·后端·全栈
HYCS6 小时前
用pixi.js实现fabric.js(六):从线性代数的角度理解编辑器交互
前端·javascript·canvas