1. UE5中的字符串类型:Text、Name与FString
在Unreal Engine 5的C++开发中,处理字符串时有三种主要类型:FText、FName和FString。这三种类型各有特点,适用于不同场景。
1.1 FString:动态字符串
FString是UE中最灵活的字符串类型,类似于标准C++中的std::string。它提供了一系列字符串操作功能:
- 动态分配内存,长度可变
- 支持各种字符串操作(拼接、查找、替换等)
- 支持与C风格字符串的转换
- 性能开销相对较大
cpp复制FString MyString = TEXT("Hello");
MyString += TEXT(" Unreal Engine");
提示:在UE5中,所有字符串字面量都应使用TEXT()宏包裹,确保跨平台兼容性。
1.2 FName:不可变标识符
FName是一种轻量级的字符串表示,主要用于存储不可变的名称标识:
- 内部使用哈希表存储,比较操作非常高效
- 不区分大小写(默认情况下)
- 适合用于对象名称、标签等不常修改的标识
cpp复制FName BoneName = TEXT("spine_01");
FName的一个关键特性是"名称表"机制:相同字符串的FName只存储一次,后续创建相同FName时直接引用已有实例。
1.3 FText:本地化文本
FText是专为本地化设计的字符串类型:
- 自动支持多语言
- 提供格式化功能(数字、日期等)
- 不可变,线程安全
- 适合所有需要显示给用户的文本
cpp复制FText Greeting = NSLOCTEXT("MyNamespace", "Hello", "你好");
在实际项目中,我建议遵循以下原则:
- 用户界面显示:总是使用FText
- 对象标识和标签:优先使用FName
- 需要频繁操作的字符串:使用FString
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. TArray:UE5中的动态数组
TArray是UE5中最常用的容器类,功能类似于C++标准库中的std::vector,但提供了更多游戏开发专用的功能。
2.1 基本操作
cpp复制TArray<int32> Numbers;
Numbers
