类型与属性Meta
在编写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=Edit float, double=FloatEdit enum=ComboBox array=ArrayPod |
Edit | 文本控件 | ||
FloatEdit | 浮点型数值控件 | ||
DegreesEdit | 用角度方式编辑弧度,编辑器显示角度,对象实际属性是弧度 | ||
AssetEdit | 资产控件(文件控件+预览图) | ||
FileControl | 文件控件 | ||
ColorEdit | 颜色控件 | ||
TextureEdit | 贴图控件 | ||
ComboBox | 下拉框控件 | ||
CustomProperty | 自定义控件,一般和“CustomType”一起使用 | ||
CustomType | 具体的自定义控件类型 | ||
FilePath | EditorType=AssetEdit或者FileControl时,会去判定这个值,设置选择窗口的根路径 | 如 "Project" "Computer" "Rseource" | |
FileFilter | EditorType=AssetEdit或者FileControl时,会去判定这个值,与脚本枚举文件类型对应 | 详见public_property FILE_FILTER表 | |
ValueList | EditorType=ComboBox时,会去获取这个值,可以是任意数字或英文字符,|为保留字符 | 表示下拉菜单中的每一项 | 值与值之间用|进行分割 |
ValueListMethod | EditorType=ComboBox时,会去获取这个值,可以是任意数字或英文字符 | 如果没有ValueList,会找ValueListMethod,通过调用method定义的函数,获取下拉菜单项 | |
Decimals | 小数精度,可以是任意非负帧数 | ||
ClampMin | 允许设置的最小值 | ||
ClampMax | 允许设置的最大值 | ||
EditorGroup | 编辑控件分组 | 任意字符 | |
EditorGroupIndex | 编辑控件分组索引 | 从0开始的索引 | |
RelevantProperty | 关联的属性 | 设置这个Meta以后,本属性修改时,会自动更新关联属性的控件(重建关联控件) | 用|分割多个属性 |
Text | 属性译文 | 设置译文的Key,与引擎xxx.idres文件对应,显示在编辑器中属性名称 | |
GetName | 任意英文字符 | 为容器中的对象属性提供差异化命名方式(构建属性树同名会覆盖) | |
ReplicatedName | 任意英文字符,|为保留字符 | 服务器对应属性名称 | |
OnReplicated | 任意英文字符,|为保留字符 | 属性值变化回调函数 | |
SubclassOf | 任意英文字符,|为保留字符 | 属性值所属的LClass类 | |
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 |
ShowName | 目前用于容器的元素展示非key名称时,指定自定义名称 | 元素本身的某个属性名称 | |
Element_OneLine | 单行显示容器元素 | ||
NetProperty | 网络同步属性 | 标记后,属性会被网络服务器同步 | |
NetPropertyAll | 网络同步所有属性 | 标记后,对象的所有属性都会被网络服务器同步 | |
NetPropertyCondition | 网络同步条件 | 网络同步条件分为Private和Public两种条件模式。Public为默认条件,会同步到所有客户端,Private则将只会同步到主控玩家的客户端 | |
NetPropertyNotify | 网络同步属性通知 | 客户端属性同步后,会触发指定的通知函数 | |
StoreProperty | 网络存盘属性 | 标记后,属性会被服务器执行存盘。目前只限玩家对象 |
友情提醒:用|分割字符串时|前后不能有空格
实体
MetaKey | MetaValue | 含义 | 备注 |
---|---|---|---|
EditorVisible | 编辑器是否可见 | 如果没有设置这个MetaKey,默认编辑器看不到这个实体 | |
Category | 任意英文字符,|为保留字符 | 属性分类,|分割子分类(待实现) | |
OnlyShowSelf | 只显示自身属性 | 只显示自身的属性,不显示从父类继承的属性 | |
Prefabable | 是否预制件基类 | 如有没有设置这个MetaKey,编辑器创建预制件选取基类时看不到这个类型 | |
DisableMarqueeSelect | 是否允许框选 | 如果打上了这个MetaKey,则编辑器框选时忽略这种类型的对象 | |
HideProperty,HideCategory | 字符串 | 本类需要隐藏的属性,分类(建议:引擎开发人员使用,项目开发使用隐藏配置文件实现) | |
TranslationVisible | 译文是否可见 | 如果没有设置这个MetaKey,编辑器不能编辑这个实体的译文 | |
ServerClass | 服务器类 | 声明的GameObject类,对应和服务器上的类对应 | 仅在非组件服务器中使用 |