UEC++ 数据类型

禁止在UE中使用C++的基本数据类型,这样会影响引擎的跨平台特性

1、基本数据类型

  • bool 代表布尔值 (永远不要假设布尔值的大小) 。
  • BOOL 将不会进行编译。
  • TCHAR 代表字符型(永远不要假设TCHAR的大小)。
  • uint8 代表无符号字节(占1个字节)。
  • int8 代表有符号的字节(占1个字节)。
  • uint16 代表无符号"短整型" (占2 个字节)。
  • int16 代表有符号"短整型" (占2 个字节)。
  • uint32 代表无符号整型(占4字节)。
  • int32 代表带符号整型(占4字节)。
  • uint64 代表无符号"四字" (8个字节)。
  • int64 代表有符号"四字"(8个字节)。
  • UE float 代表单精度浮点型 (占4 个字节)。
  • double 代表双精度浮点型 (占8 个字节)。
  • PTRINT一个符号整数和一个指针一样大小(用来标记指针的大小) (永远不要假设PTRINT的大小)。

2、字符编码

编码解决的是文本问题。

3、字符类型

UE4中提供多种字符类型进行处理数据,在不同的情景下,我们需要选择不同的类型进行操作。

区别:大小不同,编码方式不同,所有的文本在进行存储的时候,编译器编译阶段会根据编码类型进行转码。

使用:通过结构体 FPlatformTypes

typedef FPlatformTypes::ANSICHAR ANSICHAR;

转码宏的使用:下列是虚幻中提供的一些转码宏

// Usage of these should be replaced with StringCasts.
#define TCHAR_TO_ANSI(str) (ANSICHAR*)StringCast<ANSICHAR>(static_cast<const TCHAR*>(str)).Get()
#define ANSI_TO_TCHAR(str) (TCHAR*)StringCast<TCHAR>(static_cast<const ANSICHAR*>(str)).Get()
#define TCHAR_TO_UTF8(str) (ANSICHAR*)FTCHARToUTF8((const TCHAR*)str).Get()
#define UTF8_TO_TCHAR(str) (TCHAR*)FUTF8ToTCHAR((const ANSICHAR*)str).Get()

4、对象字符串

FName:资源命名字符串,FName 通过一个轻型系统使用字符串。在此系统中,特定字符串即使会被重复使用,在数据表中也只存储一次。FNames 不区分大小写(大小写不是他比较的依据)。它们为不可变,无法被操作。FNames 的存储系统和静态特性决定了通过键进行 FNames 的查找和访问速度较快。FName 子系统的另一个功能是使用散列表为 FName 转换提供快速字符串。

FText:表示一个显示字符串,用户的显式文本都需要由FText进行处理。支持格式化文本,不提供修改函数,无法进行内容修改

FString:可以被操作的字符串。开销大于其他类字符串类型

posted @ 2022-09-19 10:11  黎沐不吃香菜  阅读(707)  评论(0编辑  收藏  举报