zuihaobushi 2019-12-12
目录
由于PC、XBOX、PS4等各平台的C++基础类型大小可能不同(实际上绝大部分都是整型类型的大小不同),因此UE4提供了如下可移植基础类型的别名来统一规范类型大小:
个人认为,如果想更简单明了地选择类型的话,那么建议在类/结构体的声明部分(变量/函数返回值/函数参数等)使用可移植类型,而函数实现里出现的某些无关紧要的临时变量(例如循环体的整型变量i)则可以直接使用C++基础类型。
UCLASS() class MYPROJECT_API USomething: public UObject{ UPROPERTY() int32 ID; UFUNCTION() uint32 GetValue(); }; uint32 USomething::GetValue(){ uint32 value = 0; for(int i = 0; i < vec.size(); ++i){ value += vec[i]; } return value; }
命名(如类型或变量)中的每个单词需大写首字母,单词间通常无下划线。
例如:Health 和 UPrimitiveComponent,而非 lastMouseCoordinates 或 delta_coordinates。
bool变量必须以b为前缀(例如 bPendingDestruction 或 bHasFadedIn)。
类型名前缀需使用额外的大写字母,用于区分其和变量命名。
例如:FSkin 为类型名,而 Skin 则是 FSkin 的实例。
类型命名前缀规范如下:
蓝图类别 | 前缀 |
---|---|
继承自 UObject | U |
继承自 AActor | A |
继承自 SWidget | S |
抽象界面类的前缀 | I |
枚举类的前缀 | E |
模板类 | T |
其他多数类均以F为前缀,而部分子系统则以其他字母为前缀。
模板实例化的Typedef不再是模板,并应加上相应前缀,例如:typedef TArray<FMytype> FArrayOfMyTypes;
蓝图命名:"BP"+类别缩写+"_"+名字
例如: BPA_Player
蓝图类别 | 前缀 |
---|---|
蓝图Actor | BPA_ |
蓝图结构 | BPS_ |
蓝图枚举 | BPE_ |
蓝图接口 | BPI_ |
蓝图函数库 | BFL_ |
蓝图宏库 | BML_ |
继承于UObject的类型统统都可以使用这些功能,不过还得需要额外一个宏定义UCLASS()包装下:
UCLASS() class MYPROJECT_API UMyObject : public UObject { GENERATED_BODY() };
"Hello World!"; //Not so well TEXT("Hello World!"); //OK
系列其他文章:Aery的UE4 C++开发之旅系列文章