目录
VisibleDefaultsOnly:仅在Class Defaults可见
VisibleInstanceOnly:仅在实例化Detail可见
EditInstanceOnly:可通过属性窗口进行编辑,但只能在实例上进行,不能在原型上进行
VisibleAnywhere:Class Defaults 和 实例化 Detail 可见
EditDefaultsOnly:仅在 Class Defaults 可编辑
EditAnywhere:Class Defaults 和 实例化 Details 可编辑
BlueprintReadWrite:蓝图读写,Get和Set
属性声明
用于UE反射系统,属性使用C++变量语法声明,前面用Uproperty()宏来定义属性元数据和变量说明符
UPROPERTY([specifier, specifier, ...], [Meta(key=value, key=value, ...)])
Type VariableName;
示例
UENUM(BlueprintType)
enum class EColorBits1 :uint8
{
ECB_Red,
ECB_Green,
ECB_Blue,
};
//使用"bitflags"元标记来创建UENUM,实际使用似乎没差别
UENUM(BlueprintType, Meta = (Bitflags))
enum class EColorBits2 :uint8
{
ECB_Red,
ECB_Green,
ECB_Blue,
};
属性说明符
控制属性与引擎和编辑器的相处方式
常用说明符:
VisibleDefaultsOnly:仅在Class Defaults可见
UPROPERTY(VisibleDefaultsOnly)
int32 VisibleDefaultsOnlyInt;
VisibleInstanceOnly:仅在实例化Detail可见
UPROPERTY(VisibleInstanceOnly)
FVector VisibleInstanceOnlyVector;
EditInstanceOnly:可通过属性窗口进行编辑,但只能在实例上进行,不能在原型上进行
VisibleAnywhere:Class Defaults 和 实例化 Detail 可见
UPROPERTY(VisibleAnywhere)
FString VisibleAnywhereString;
EditDefaultsOnly:仅在 Class Defaults 可编辑
UPROPERTY(EditDefaultsOnly)
int32 EditDefaultsOnlyInt;
EditAnywhere:Class Defaults 和 实例化 Details 可编辑
UPROPERTY(EditAnywhere)
FString EditAnywhereString;
BlueprintReadOnly:蓝图只读,只能Get
UPROPERTY(BlueprintReadOnly)
int32 intValue_BlueprintReadOnly;
BlueprintReadWrite:蓝图读写,Get和Set
UPROPERTY(BlueprintReadWrite)
int32 intValue_BlueprintReadWrite;
Category 类别
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="TopCategory")
int32 intValue1;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "TopCategory|SubCategory")
int32 intValue2;
BlueprintAssignable:蓝图中可绑定委托
DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FNotifyPawnChange, float, PawnHpPercent, float, PawnPhysicalShieldPercent, float, PawnMageShieldPercent);
//蓝图中可绑定委托
UPROPERTY(BlueprintAssignable)
FNotifyPawnChange NotifyPawnChange;
元数据说明符Meta
声明类、接口、结构体、列举、列举值、函数,或属性时,可添加 元数据说明符 来控制其与引擎和编辑器各方面的相处方式。每一种类型的数据结构或成员都有自己的元数据说明符列表
常见说明符
displayName 别名
- 可以便于蓝图变量搜索,如果变量名不好记的话
EditCondition 条件可编辑
UPROPERTY(EditAnywhere,BlueprintReadWrite, Meta = (displayName="USEOffset1、2 标志位") )
bool bUSEOffset;
UPROPERTY(EditAnywhere, Meta = (displayName = "ContitionValue 控制 offset3"))
int32 ContitionValue;
UPROPERTY(EditAnywhere, Meta = (displayName = "ContitionColorBits 控制 offset4"))
EColorBits1 ContitionColorBits;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Meta = (EditCondition = "bUSEOffset"))
float Offset1;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Meta = (EditCondition = "!bUSEOffset"))
float Offset2;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Meta = (EditCondition = "ContitionValue>0"))
float Offset3;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Meta = (EditCondition = "ContitionColorBits==EColorBits1::ECB_Green"))
float Offset4;
UMeta 扩展宏
UPROPERTY(EditAnywhere)
FName ChineseName UMeta(displayName="中文名");
UPROPERTY(EditAnywhere)
float Weight UMeta(displayName = "体重") = 65.0f;
UPROPERTY(EditAnywhere)
EColorBits1 FavoriteColorBits UMeta(displayName = "最喜欢的颜色")=EColorBits1::ECB_Blue;
参考链接:
Unreal Engine UProperties | 虚幻引擎5.0文档
【UE4 C++ 基础知识】<1> UPROPERTY宏、属性说明符、元数据说明符 - 砥才人 - 博客园 (cnblogs.com)
原文地址:https://www.jb51.cc/wenti/3284148.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。