类型与属性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类,与服务器上的类对应 | 仅在非组件服务器中使用 |