类型与属性Meta
最近更新时间:2023-11-22
在编写C++类时,按规范填写适当的类型和属性Meta,可以控制属性是否能在编辑器中编辑,与属性编辑器的交互,与序列化机制的交互(是否存盘,是否跳过序列化等)。
DECLARE_PROPERTY (bool, LModelComponent, IfOverrideTexPaths,
GetIfOverrideTexPaths, SetIfOverrideTexPaths, EditAnywhere,
EditorType = CheckBox, Category = Render);
DECLARE_PROPERTY(const char*, LModelComponent, OverrideTexPaths,
GetOverrideTexPaths, SetOverrideTexPaths, EditAnywhere,
EditorType = FileControl, Category = Render, FileFilter = Directory
EditCondition = IfOverrideTexPaths);
属性
MetaKey | MetaValue | 含义 | 备注 |
---|---|---|---|
EditAnywhere | 编辑器可读写 | 如果没有设置这两个MetaKey,默认编辑器看不到这个属性 | |
VisibleAnywhere | 编辑器只读(只读控件待实现),对象属性内部可见,容器属性表示容器本身不可修改 | ||
Category | 任意英文字符 | 属性分类 | 用“|”分割父子分类,分割前后及名称不能带空格 |
EditorType | CheckBox | 复选框控件 | 如果没有设置这个MetaKey,则根据属性类型来自动匹配 boolean = CheckBox string, widestr=String int, int64, float, double=FloatEdit enum=ComboBox |
String | 文本控件 | ||
FloatEdit | 浮点型数值控件 | ||
DegreesEdit | 用角度方式编辑弧度,编辑器显示角度,对象实际属性是弧度 | ||
AssetEdit | 资产控件(文件控件+预览图) | ||
FileEdit | 文件控件 | ||
ColorEdit | 颜色控件 | ||
TextureEdit | 贴图控件 | ||
ComboBox | 下拉框控件 | ||
ChordControl | 快捷键控件 | ||
BehaviorTree | 行为树控件 | ||
VisibleMaskEdit | 可视遮罩控件 | ||
SoundFileEdit | 音频文件控件 | ||
CustomProperty | 任意英文字符 | 自定义属性控件 | 表示使用指定的类型构建属性节点 |
FilePath | 文件类型控件会去判定这个值,设置选择窗口的根路径 | 如"Project"、"Computer"、"Resource" | |
FileFilter | 文件类型控件会去判定这个值,与枚举文件类型对应 | 详见FileFilterMap表 | |
ValueList | 下拉框控件会去获取这个值,可以是任意数字或英文字符,“|”为保留字符 | 表示下拉菜单中的每一项 | 值与值之间用“|”进行分割 |
ValueListMethod | 下拉框控件会去获取这个值,可以是任意数字或英文字符 | 如果没有ValueList,会找ValueListMethod,通过调用method定义的函数,获取下拉菜单项 | |
AdvancedDisplay | 属性控件显示在进阶分类中 | ||
Decimals | 小数精度,可以是任意非负整数 | ||
ClampMin | 允许设置的最小值 | ||
ClampMax | 允许设置的最大值 | ||
EditorGroup | 编辑控件分组 | 任意字符 | |
EditorGroupIndex | 编辑控件分组索引 | 从0开始的索引 | |
RelevantProperty | 关联的属性 | 设置这个Meta以后,本属性修改时,会自动更新关联属性的控件(重建关联控件) | 用“|”分割多个属性 |
ReplicatedName | 任意英文字符,“|”为保留字符 | 服务器对应属性名称 | |
OnReplicated | 任意英文字符,“|”为保留字符 | 属性值变化回调函数 | |
SubclassOf | 任意英文字符,“|”为保留字符 | 属性值所属的LClass类 | |
ShowOnlyInnerProperties | 将对象属性对应的控件显示到其父类中 | ||
InitialEdit | 初始化可编辑,只在特点页面才显示的属性,与实体Meta HasInitialEdit对应 | ||
Config | 配置类型属性,只在特点页面才显示的属性,与实体Meta Config对应 | ||
SkipSerialization | 跳过序列化 | ||
Transient | 跳过存盘 | ||
DuplicateTransient | 跳过复制 | ||
NonPIEDuplicateTransient | 跳过非PIE的复制 | ||
VisibleCondition | 显示条件 | 条件属性值满足表达式时,本属性才显示 | |
EditCondition | 编辑条件 | 条件属性值满足表达式时,本属性才能编辑 | |
Order | 整型数值 | 属性排序优先级,数值越大排序优先级越高 | |
KindOfActor | 字符串,应该对应一个LActor的子类的类名 | 罗列关卡中所有类型是KindOfActor标注的Actor到一个ComboBox中,供用户选择 | 属性类型必须是PERSISTID |
Loop | 属性值在最大最小值之间循环 | ||
HintText | 字符串 | 属性控件提示用的,文本信息 | |
KindOfComponent | 字符串,格式:KindOfComponent = "LVoxelTerrainActor. LPlanetAtmosphereComponent" | 范例的意思是:罗列关卡中类型是LVoxelTerrainActor的Actor下的LPlanetAtmosphereComponent组件到一个ComboBox中,供用户选择 | 属性类型必须是PERSISTID |
NetProperty | 网络同步属性 | 标记后,属性会被网络服务器同步 | |
NetPropertyAll | 网络同步所有属性 | 标记后,对象的所有属性都会被网络服务器同步 | |
NetPropertyCondition | 网络同步条件 | 网络同步条件分为Private和Public两种条件模式。Public为默认条件,会同步到所有客户端,Private则将只会同步到主控玩家的客户端 | |
NetPropertyNotify | 网络同步属性通知 | 客户端属性同步后,会触发指定的通知函数 | |
StoreProperty | 网络存盘属性 | 标记后,属性会被服务器执行存盘。目前只限玩家对象 |
注意:用“|”分割字符串时,“|”前后不能有空格。
实体
MetaKey | MetaValue | 含义 | 备注 |
---|---|---|---|
EditorVisible | 编辑器是否可见 | 如果没有设置这个MetaKey,默认编辑器看不到这个实体 | |
Category | 任意英文字符,"|"为保留字符 | 属性分类,\"|"分割子分类(待实现) | |
OnlyShowSelf | 只显示自身属性 | 只显示自身的属性,不显示从父类继承的属性 | |
TruncateParentProperty | 从此截断父级属性 | 在收集属性时遇到此标记的对象时不再中断其父类的属性 | |
Prefabable | 是否预制件基类 | 如果没有设置这个MetaKey,编辑器创建预制件选取基类时看不到这个类型 | |
DisableMarqueeSelect | 是否允许框选 | 如果设置了这个MetaKey,则编辑器框选时忽略这种类型的对象 | |
HideProperty,HideCategory | 字符串 | 本类需要隐藏的属性和分类(建议:引擎开发人员使用,项目开发使用隐藏配置文件实现) | |
TranslationVisible | 译文是否可见 | 如果没有设置这个MetaKey,编辑器不能编辑这个实体的译文 | |
ServerClass | 服务器类 | 声明的GameObject类,与服务器上的类对应 | 仅在非组件服务器中使用 |