1. UPROPERTY
UPROPERTY 是 Unreal Engine 中用于声明属性的宏,它用于标记某个变量是一个 Unreal Engine 托管的属性,并且可以在编辑器中进行访问和操作。也可以理解为,UPROPERTY 的作用是生成变量的反射数据,将变量暴露给属性面板、蓝图,实现变量与属性面板、蓝图之间的通信。
- 可见性
- VisibleDefaultsOnly: 仅在类的默认面板可见
- VisibleInstanceOnly: 仅在类的实例化细节面板可见
- VisibleAnywhere: 在类的默认面板和实例化细节面板均可见
- 面板编辑
- EditDefaultsOnly: 仅在类的默认面板可编辑
- EditInstanceOnly: 仅在类的实例化细节面板可编辑
- EditAnywhere: 在类的默认面板和实例化细节面板均可编辑
- 蓝图
- BlueprintReadOnly: 仅在蓝图中可读
- BlueprintRead: 在蓝图中可读可写
- 操作方式: 在蓝图类的 EventGraph 中右键直接搜索变量名即可
- 目录:在类的默认面板、实例化细节面板及蓝图中创建多级目录,不同的变量隶属不同的目录或子目录
// 目录:Pepole UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Pepole" int32 TotalNum = 100; // 子目录:People/Men UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "People/Men" int32 MenNum = 63; // 子目录:People/Women UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "People/Women" int32 WomenNum = 37; - 元数据说明符:meta
- DisplayName:别名,在蓝图中显示别名
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName = "Age")) int32 HowOld = 30;- EditCondition:条件编辑
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (DisplayName = "EnableFlag")) bool Enable; // 使用变量 Enable 来控制变量 Name 的激活/禁用状态 UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (EditCondition = "Enable")) FString Name;- ToolTip:变量解释和说明
UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (ToolTip = "The name of this player")) FString Name;- ExposeOnSpawn:蓝图生成时暴露(在蓝图界面搜索 ”Spawn Actor from class“ --> 选择蓝图类),现代当于在蓝图中创建变量时勾选 ”Expose on spawn“ 选项。
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Pepole", meta = (ExposeOnSpawn = "ExposeOnSpawnValue")) float health;- AllowPrivateAccess:允许访问私有成员
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, meta = (AllowPrivateAccess = "true")) float length
2. UFUNCTION
UPROPERTY 的作用是生成函数的反射数据,将函数暴露给蓝图,实现函数与属蓝图之间的通信。
- 可调用
- BlueprintCallable:函数在蓝图中可调用
// 普通函数 UFUNCTION(BlueprintCallable, Category = "Pepole") void PrintPepoleInfo(); // 纯虚函数 UFUNCTION(BlueprintCallable, BlueprintPure, Category = "Pepole") void PepoleSleep();- BlueprintImplementableEvent:在 c++ 中声明(不能定义),在蓝图中定义。在蓝图的 ClassDefault 界面中寻找 override 按钮。
// 无返回值的函数在蓝图中以 Event 的方式呈现 UFUNCTION(BlueprintImplementableEvent) void PeopleRun(); UFUNCTION(BlueprintImplementableEvent) void PeopleDie(float age); // 有返回值的函数在蓝图中以函数的方式呈现 UFUNCTION(BlueprintImplementableEvent) int GetPeopleAge(); UFUNCTION(BlueprintImplementableEvent) int PeopleTalk(float duration);- BlueprintNativeEvent:在 c++ 中声明和定义,蓝图可重载,亦可不重载
// 在 c++ 中定义该函数时,其函数名要写成:PeopleWalk_Implementation UFUNCTION(BlueprintNativeEvent) void PeopleWalk();- 元数据说明符:meta
// 函数别名 UFUNCTION(BlueprintCallable, Category = "Pepole", meta = (DisplayName = "PeopleIntroduce")) void PrintPepoleInfo();
1062

被折叠的 条评论
为什么被折叠?



