Skip to main content

类型与属性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);

属性

MetaKeyMetaValue含义备注
EditAnywhere编辑器可读写如果没有设置这两个MetaKey,默认编辑器看不到这个属性
VisibleAnywhere编辑器可读(只读控件待实现),或对象属性可,容器对象表示容器本身不可修改
Category任意英文字符属性分类用|分割父子分类,分割前后及名称不能带空格。
EditorTypeCheckBox选框控件如果没有设置这个MetaKey,则根据属性类型来自动匹配
boolean = CheckBox
string=Edit
float, double=FloatEdit
enum=ComboBox
array=ArrayPod
Edit文本控件
FloatEdit浮点型数值控件
DegreesEdit用角度方式编辑弧度,编辑器显示角度,对象实际属性是弧度
AssetEdit资产控件(文件控件+预览图)
FileControl文件控件
ColorEdit颜色控件
TextureEdit贴图控件
ComboBox下拉框控件
CustomProperty自定义控件,一般和“CustomType”一起使用
CustomType具体的自定义控件类型
FilePathEditorType=AssetEdit或者FileControl时,会去判定这个值,设置选择窗口的根路径如 "Project" "Computer" "Rseource"
FileFilterEditorType=AssetEdit或者FileControl时,会去判定这个值,与脚本枚举文件类型对应详见public_property FILE_FILTER表
ValueListEditorType=ComboBox时,会去获取这个值,可以是任意数字或英文字符,|为保留字符表示下拉菜单中的每一项值与值之间用|进行分割
ValueListMethodEditorType=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网络存盘属性标记后,属性会被服务器执行存盘。目前只限玩家对象

友情提醒:用|分割字符串时|前后不能有空格

实体

MetaKeyMetaValue含义备注
EditorVisible编辑器是否可见如果没有设置这个MetaKey,默认编辑器看不到这个实体
Category任意英文字符,|为保留字符属性分类,|分割子分类(待实现)
OnlyShowSelf只显示自身属性只显示自身的属性,不显示从父类继承的属性
Prefabable是否预制件基类如有没有设置这个MetaKey,编辑器创建预制件选取基类时看不到这个类型
DisableMarqueeSelect是否允许框选如果打上了这个MetaKey,则编辑器框选时忽略这种类型的对象
HideProperty,HideCategory字符串本类需要隐藏的属性,分类(建议:引擎开发人员使用,项目开发使用隐藏配置文件实现)
TranslationVisible译文是否可见如果没有设置这个MetaKey,编辑器不能编辑这个实体的译文
ServerClass服务器类声明的GameObject类,对应和服务器上的类对应仅在非组件服务器中使用