# 变量类型
## 根据前缀划分
1. **F**:表示该类是一个“Foundation Class”,或者叫做“基础类”。这些类一般都不包含任何的UObject功能,可以认为它是“裸”的C++类。常见的有FVector(三维向量)、FRotator(旋转)、FColor(颜色)等。
2. **U**:表示该类是一个“Unreal Class”,或者叫做“虚幻类”。这些类是UObject的子类,是Unreal引擎的基础类型,拥有垃圾回收、反射等特性。常见的有UObject(所有类的基类)、UActorComponent(所有Actor组件的基类)、USkeletalMeshComponent(可动的网格组件)等。
3. **A**:表示该类是一个“Actor Class”,或者叫做“演员类”。这些类是所有游戏世界中的物体的基类,都继承自AActor。常见的有AActor(所有演员的基类)、APawn(可被玩家控制的演员)、ACharacter(有一定行为的演员)等。
4. **T**:表示该类是一个“Template Class”,或者叫做“模板类”。这些类是模板类,可以用于创建动态数组(TArray)、哈希集(TSet)、键值对集(TMap)等。
5. **I**:表示该类是一个“Interface Class”,或者叫做“接口类”。这些类定义了一些方法,其他类可以实现这些方法,以达到代码重用和解耦合的目的。
## 根据功能划分
**1. 基础类型:**
- `int32`:一个 32 位的整数。
- `float`:一个浮点数。
- `bool`:一个布尔值,其值可以是 true 或 false。
- `FString`:一个字符串。与标准的 C++ 字符串不同,FString 用于存储文本,并且可以方便地进行操作,如连接、分割等。
**2. UObject 派生类:**
所有的游戏对象都派生自基类 `UObject`。以下是一些常见的 `UObject` 派生类:
- `AActor`:这是所有在场景中的游戏对象的基类。例如,角色(`ACharacter`)、静态网格体(`AStaticMeshActor`)、摄像机(`ACameraActor`)等都是 `AActor` 的派生类。
- `UActorComponent`:这是所有附着在游戏对象上的组件的基类。例如,视觉组件(如 `UMeshComponent`)、物理组件(如 `UPrimitiveComponent`)、行为组件(如 `UInputComponent`)等都是 `UActorComponent` 的派生类。
**3. 容器类:**
- `TArray<T>`:一个动态数组,可以包含任何类型的元素。
- [[TMap|TMap<K,V>]]:一个映射,包含键值对。
- `TSet<T>`:一个集合,包含唯一的元素。
**4. 其他引擎特定类型:**
- `FVector`:表示三维空间中的点或向量。
- `FRotator`:用于表示旋转。
- `FQuat`:代表四元数,也用于表示旋转,但不会遇到诸如万向锁问题的困扰。
- `FTransform`:包含位置、旋转(使用四元数)和缩放信息。