视频学习链接:UE4C++入门到精通合集
1. 基本数据类型
bool
uint8
int32
float
int64
FName:
FNames不区分大小写,它们为不可变,无法被操作。
FNames的存储系统和静态特性决定了通过键进行FNames的查找和访问速度较快。
FNames子系统的另一个功能是使用散列表为FName转换提供快速字符串。
FString:
FString可以搜索、修改、与其他字符串比较,不过,这些操作会导致FString的开销比不可变字符串类更大。这是因为FString对象保存自己的字符数组,而FName和FText对象保存共享字符数组的指针,并且可以完全根据索引值建立相等性
FText:
一般用于显示和文本本地化
FVector:
3维向量
FVector2D:
2维向量
FRotator:
翻滚角:Roll是围绕X轴旋转
俯仰角:Pitch是围绕Y轴旋转
偏航角:Yaw是围绕Z轴旋转
FTransform:
Location、Rotation、Scale、Mobility统称为变换
2. UE反射用到的宏
2.1 作用于类
成对使用,UCLASS():写在类上,GENERATED_BODY():写在类内,一般为第一行
UCLASS()
class HELLOUE_API AMyActor : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AMyActor();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
};
2.2 作用于函数
UFUNCTION():
- BlueprintCallable:
此函数可在蓝图或关卡蓝图图表中执行 - BlueprintPure:
此函数不对拥有它的对象产生任何影响,可在蓝图或关卡蓝图图表中执行 - BlueprintImplementableEvent:
需要在蓝图里面重载 - BlueprintNativeEvent:
此函数旨在被蓝图覆盖掉,但是也具有默认原生实现。
用于声明名称与主函数相同的附加函数,但是末尾添加了Implementation,是写入代码的位置。
如果未找到任何蓝图覆盖,该自动生成的代码将调用Implementation方法 - CallInEditor
可通过细节面板中的按钮在编辑器中的选定实例上调用此函数
UFUNCTION(BlueprintCallable)
void CollectMe(bool bDestroy = true);
2.3 作用于变量
UPROPERTY:
- EditAnywhere
随处可见可变 - VisibleAnywhere
可见不可变 - EditDefaultsOnly
在类默认设置中可见 - BlueprintReadOnly
蓝图中只读 - BlueprintReadWrite
蓝图中可读可写 - EditInstanceOnly
可通过属性窗口进行编辑,只能在实例上进行,不能在原型上进行
UPROPERTY(EditAnywhere)
bool bCanBeCollected;
3. 命名风格
- Axxx
继承自AActor以A开头命名 - Uxxx
继承自UObject,以U开头命名 - Fxxx
原生C++类型,以F开头命名 - Exxx
枚举Enum,以E开头命名 - Ixxx
接口Interface,以I开头命名 - Sxxx
slate相关的,以S开头命名
4. 枚举&结构体
4.1 枚举
UENUM(BlueprintType)
enum ECustomColorType { // C++98
RED,
BLUE,
YELLOW
};
UENUM(BlueprintType)
enum class ECustomColorType : uint8 { // C++11,推荐使用这种风格
RED,
YELLOW,
BLUE
};
4.2 结构体
USTRUCT(BlueprintType)
struct MyStruct
{
GENERATED_USTRUCT_BODY()
public:
UPROPERTY(EditAnywhere)
int32 num;
};