反射系统
反射是程序可以访问、检测和修改它本身状态或行为的一种能力。反射的一个简单示例就是程序在运行的过程中,可以通过类名称创建对象,并获取类中声明的成员变量和方法。
反射系统为Nibiru Studio提供一系列属性注册接口,以便能够通过这些注册接口将属性生成在编辑器的属性面板中可供属性实时编辑预览。
用户可以在组件中调用接口注册属性完成属性面板中属性的编辑预览功能。
变量反射
整型
可引用注册接口
| 接口名称 | 接口描述 |
|---|---|
| PROPERTY | 用于非Map变量属性注册 |
| PROPERTY_RANGE | 非Map变量属性注册并配置变量范围 |
| PROPERTY_FLAG_RANGE | 非Map变量属性注册并配置变量范围以及对应的Flag |
| PROPERTY_HIDE | 在编辑器属性面板中隐藏属性 |
| PROPERTY_INVISIBLE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,但占位) |
| PROPERTY_GONE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,也不占位) |
| PROPERTY_SET_ICON | 设置面板中属性的图标 |
| PROPERTY_SET_UNIT | 设置属性输入框中内容的单位名称 |
| PROPERTY_SET_RANGE | 设置非Map变量属性的范围 |
| PROPERTY_SET_SLIDER_STEPLENGTH | 设置带有滑动条的非Map变量属性的滑动步长 |
| PROPERTY_SET_ENABLE | 设置属性在面板中的可编辑性 |
PROPERTY(propName, varName, flags)
- 参数
| 名称 | 描述 |
|---|---|
| propName | 属性名称 |
| varName | 变量 |
| flags | Flag |
描述 用于非map类型的属性变量注册。
示例 PROPERTY(TestDemo,m_Test,PROPERTY_FLAG_STYLE_SLIDER)
PROPERTY_RANGE(propName,varName,minValue,maxValue)
- 参数
| 名称 | 描述 |
|---|---|
| propName | 属性名称 |
| varName | 变量 |
| minValue | 变量的最小值 |
| maxValue | 变量的最大值 |
描述 用于非map类型非字符串类型的属性变量注册,在注册时可设置变量的范围。此接口内部直接使用了默认的flag,即PROPERTY_FLAG_DEFAULT
示例
//在脚本.h文件中声明变量
int m_Restitution
//在cpp文件中注册属性
PROPERTY_RANGE(Restitution, m_Restitution, 0, 1)PROPERTY_FLAG_RANGE(propName,varName,flags,minValue, maxValue)
- 参数
| 名称 | 描述 |
|---|---|
| propName | 属性名称 |
| varName | 变量 |
| flags | Flag |
| minValue | 变量的最小值 |
| maxValue | 变量的最大值 |
描述 用于非map类型非字符串类型的属性变量注册,在注册时用户可设置变量的范围和反射Flag
示例
//“m_ShadowStrength”是属性变量,“0,1”是设置的属性范围
PROPERTY_FLAG_RANGE(ShadowStrength,m_ShadowStrength,PROPERTY_FLAG_SLIDER, 0, 1)PROPERTY_HIDE(propName)
- 参数
| 名称 | 描述 |
|---|---|
| propName | 属性名称 |
描述 用于隐藏面板中指定的属性
示例
//“TestDemo”是属性名称,替换成实际的名称即可
PROPERTY_HIDE(TestDemo)PROPERTY_INVISIBLE_NAME(propName)
- 参数
| 名称 | 描述 |
|---|---|
| propName | 属性名称 |
描述 用于隐藏面板中属性的名称,但是属性名称存在占位
示例
//“TestDemo”属性名称,替换成实际的名称即可
PROPERTY_INVISIBLE_NAME(TestDemo)PROPERTY_GONE_NAME(propName)
- 参数
| 名称 | 描述 |
|---|---|
| propName | 属性名称 |
描述 用于隐藏面板中属性的名称,属性名称没有占位
示例
//“TestDemo”属性名称,替换成实际的名称即可
PROPERTY_GONE_NAME(TestDemo)PROPERTY_SET_ICON(propName,flag,iconPath)
- 参数
| 名称 | 描述 |
|---|---|
| propName | 属性名称 |
| flag | 目前仅支持以下几种flag的设置(flag之间可以配合进行位运算): a. 默认状态EDITOR_UI_STATE_NORMAL b. 鼠标点击状态EDITOR_UI_STATE_PRESS c. 鼠标悬停状态EDITOR_UI_STATE_HOVER d. 标记当前设置的是某条属性左侧显示的图标路径PROPERTY_FLAG_ICON e. 用于双态按钮的反射中,标记在PROPERTY_FLAG_STATE_POSITIVE状态下图标的路径 f. 用于双态按钮的反射中,标记在PROPERTY_FLAG_STATE_NEGATIVE状态下图标的路径 |
| iconPath | 图标路径 |
描述 用来设置不同状态下图标的路径,目前仅用于以下两种情况:
- 用来设置属性左侧图标路径;
- 用来设置双态按钮在不同状态下的图标路径
示例
//设置NodeShadowDisplay属性生成的双态按钮在面板中显示的属性图标
PROPERTY_SET_ICON(NodeShadowDisplay,PROPERTY_FLAG_STATE_NEGATIVE|EDITOR_UI_STATE_NORMAL,"RightAlign_Hover.png")PROPERTY_SET_UNIT(propName,unit,flag)
- 参数
| 名称 | 描述 |
|---|---|
| propName | 属性名称 |
| unit | 单位名称,字符串类型 |
| flag | Flag有以下几种类型可供选择设置: a. 若当前编辑控件是map变量中key值注册生成的,则需要传入PROPERTY_FLAG_RMAP_KEY b. 若当前编辑控件是map变量中value值注册生成的,则需要传入PROPERTY_FLAG_RMAP_VALUE c. 若当前编辑控件是非map变量注册生成的,则需要传入默认flag,即PROPERTY_FLAG_DEFAULT |
描述 用来给属性变量值设置单位名称显示在面板中
示例
//其中”px”是单位名称
PROPERTY_SET_UNIT(NodeSize,"px",PROPERTY_FLAG_DEFAULT)- 面板中的显示样式
PROPERTY_SET_RANGE(propertyName,valueType,minValue,maxValue)
- 参数
| 名称 | 描述 |
|---|---|
| propertyName | 属性名称 |
| valueType | 变量类型 |
| minValue | 变量最小值 |
| maxValue | 变量最大值 |
描述 用来给非map变量设置数值的范围
示例
//如以下设置int类型的变量的范围为0-360
PROPERTY_SET_RANGE(NodeRotation, int, 0, 360)PROPERTY_SET_SLIDER_STEPLENGTH(propertyName,valueType,stepLength)
- 参数
| 名称 | 描述 |
|---|---|
| propertyName | 属性名称 |
| valueType | 变量类型 |
| stepLength | 设置滑动条的步长 |
描述 用来给非map变量注册生成的滑动条设置步长
示例
//如以下所示,“TestDemo”是属性名称,数据类型为int,步长为10
PROPERTY_SET_SLIDER_STEPLENGTH(TestDemo,int,10)PROPERTY_SET_ENABLE(propertyName,enable,flag)
- 参数
| 名称 | 描述 |
|---|---|
| propertyName | 属性名称 |
| enable | bool类型,设置属性在面板中是否可编辑 |
| flag | Flag有以下几种类型可供选择设置: a. 若当前编辑控件是map变量中key值注册生成的,则需要传入PROPERTY_FLAG_RMAP_KEY b. 若当前编辑控件是map变量中value值注册生成的,则需要传入PROPERTY_FLAG_RMAP_VALUE 若当前编辑控件是非map变量注册生成的,则需要传入默认flag ,即PROPERTY_FLAG_DEFAULT |
描述 用来设置属性在面板中是否可进行编辑
示例
//设置属性“Test”的编辑状态,“false”表示不可编辑
PROPERTY_SET_ENABLE(Test,false,PROPERTY_FLAG_DEFAULT)可引用的flag
| Flag名称 | Flag描述 |
|---|---|
| PROPERTY_FLAG_DEFAULT | 默认flag |
| PROPERTY_FLAG_STYLE_COMBOBOX | 下拉列表 |
| PROPERTY_FLAG_STYLE_RADIOBUTTON | 单选按钮 |
| PROPERTY_FLAG_STYLE_SLIDER | 带有滑动条的输入框 |
| PROPERTY_FLAG_DISABLE | 设置属性在面板中不允许编辑 |
| PROPERTY_FLAG_ICON | 标记当前设置的信息是属性名称左侧显示的图标 |
| PROPERTY_FLAG_LINEEDIT_ECHO_MODE_PASSWORD | 用于输入框的显示,标记当前输入框中显示为密码模式 |
| PROPERTY_FLAG_DISABLE_RESET | 设置当前属性不参与属性值的重置 |
PROPERTY_FLAG_DEFAULT
描述 默认flag,一般是通过识别变量类型来确定面板中显示的默认样式。目前在以下几种数据类型反射注册中均可使用此flag来设置默认的显示状态:
- 整型:int、uint32
- 浮点型:float、double
- 字符串:string
- bool
- 向量:Vector2、Vector3、Vector4、Rect
- 颜色:Color、Color32、HDRColor
- 枚举
示例
//“m_Row”表示变量,在实际应用的过程中,可以替换成其所支持的数据类型
PROPERTY(Row,m_Row,PROPERTY_FLAG_DEFAULT)- **面板中显示的样式
- 整型、浮点型、字符串
- bool
- 向量
- 颜色
- 枚举
- 整型、浮点型、字符串
PROPERTY_FLAG_STYLE_COMBOBOX
描述 表示当前属性在属性面板中显示为下拉框,下拉框包含单选和多选两种形式。目前此flag支持的变量类型为:候选(int/float/double/string)(其中候选创建请参考PROPERTY_CANDIDATE系列接口)。
示例:
REFLECTION_BEGIN(xx)
//注册候选
PROPERTY_CANDIDATE_BEGIN(Align, PROPERTY_CANDIDAE_DEFAULT)
PROPERTY_CANDIDATE_ITEM(Left,0)
PROPERTY_CANDIDATE_ITEM_SET_ICON(Left,EDITOR_UI_STATE_NORMAL, “xxx.png”)
PROPERTY_CANDIDATE_ITEM(Center,1)
PROPERTY_CANDIDATE_ITEM_SET_ICON(Center,EDITOR_UI_STATE_NORMAL, “xxx.png”)
PROPERTY_CANDIDATE_ITEM(Right,2)
PROPERTY_CANDIDATE_ITEM_SET_ICON(Right,EDITOR_UI_STATE_NORMAL, “xxx.png”)
PROPERTY_CANDIDATE_ITEM(Stretch,3)
PROPERTY_CANDIDATE_ITEM_SET_ICON(Stretch,EDITOR_UI_STATE_NORMAL, “xxx.png”)
PROPERTY_CANDIDATE_END
// “m_Test”表示变量,在实际应用的过程中,可以替换成其所支持的数据类
PROPERTY(Test, m_Test,PROPERTY_FLAG_STYLE_COMBOBOX)
//将属性和候选绑定在一起
PROPERTY_SET_CANDIDATE(Test, Align, PROPERTY_FLAG_DEFAULT)
REFLECTION_END- 面板中的显示样式
- 多选下拉框
- 单选下拉框

- 多选下拉框
(1)PROPERTY_CANDIDATE系列接口
- 参数
| 宏定义接口 | 名称 | 描述 |
|---|---|---|
| PROPERTY_CANDIDATE_BEGIN | name | 候选的名称 |
| flag | 候选类型,包括以下三种类型: a.PROPERTY_CANDIDAE_DEFAULT 单选,直接赋值给属性 b.PROPERTY_CANDIDAE_MULTISEL_BITSET 多选,采用位与运算后赋值给属性,适用于整型变量 c.PROPERTY_CANDIDAE_MULTISEL_MANUAL多选,不直接改变属性值,由开发者根据选项自己修改 | |
| PROPERTY_CANDIDATE_ITEM | itemLabel | 在面板中显示的子项名称,以字符串的形式传入 |
| value | 子项实际对应的数值,以字符串的形式传入 | |
| PROPERTY_CANDIDATE_ITEM_BIT | itemLabel | 在面板中显示的子项名称 |
| bitIdx | 子项实际对应的整形数值,保证能够进行位运算 | |
| PROPERTY_CANDIDATE_ITEM_SET_ICON | itemLabel | 在PROPERTY_CANDIDATE_ITEM和PROPERTY_CANDIDATE_ITEM_BIT中传入的itemLabel值 |
| state | state包含以下三种类型: a. 默认状态 EDITOR_UI_STATE_NORMAL b. 鼠标点击状态 EDITOR_UI_STATE_PRESS c. 鼠标悬停状态 EDITOR_UI_STATE_HOVER | |
| iconPath | 当候选以单选按钮显示的时候,此参数用来设置按钮的背景图标路径 |
描述 PROPERTY_CANDIDATE系列接口主要是为了能够将非枚举类型的变量也通过下拉框列表以及单选按钮的形式显示在面板中,以供用户进行选择。该系列接口和枚举的ENUM接口类似,将各种选项注册在反射系统中,需要和PROPERTY、PROPERTY_SET_CANDIDATE等注册接口配合使用。
示例
//在脚本cpp文件REFLECTION_BEGIN宏包围圈中注册
PROPERTY(Row,m_Row,PROPERTY_FLAG_DEFAULT)
REFLECTION_BEGIN(xxx)
//创建“EventType”名字的候选
PROPERTY_CANDIDATE_BEGIN(EventType, PROPERTY_CANDIDAE_DEFAULT)
//添加两个候选项“PointerEnter”“PointerExit”
PROPERTY_CANDIDATE_ITEM(PointerEnter, PointerEnter)
PROPERTY_CANDIDATE_ITEM(PointerExit, PointerExit)
//设置候选项“PointerExit”的背景图标路径(仅用于单选按钮,对下拉框形式的编辑控件没有作用)
PROPERTY_CANDIDATE_ITEM_SET_ICON(PointerExit,EDITOR_UI_STATE_NORMAL,”xxx.png”)
//候选“EventType”结束的标志
PROPERTY_CANDIDATE_END
//注册一条属性在编辑器中显示为下拉框
PROPERTY(Tag, m_Tag, PROPERTY_FLAG_STYLE_COMBOBOX)
//或者将属性在编辑器中的显示形式设置为单选按钮,下拉框和单选按钮使用的时候二选一
//PROPERTY(Tag, m_Tag, PROPERTY_FLAG_STYLE_RADIOBUTTON)
//将候选“EventType”和属性“Tag”进行绑定
PROPERTY_SET_CANDIDATE(Tag, EventType, PROPERTY_FLAG_DEFAULT)
REFLECTION_END(2)PROPERTY_SET_CANDIDATE(propertyName,candidateName,flag)
- 参数
| 名称 | 描述 |
|---|---|
| propertyName | 属性名称 |
| candidateName | 候选名称 |
| flag | Flag有以下几种类型可供选择设置: a. 若当前编辑控件是map变量中key值注册生成的,则需要传入PROPERTY_FLAG_RMAP_KEY b. 若当前编辑控件是map变量中value值注册生成的,则需要传入PROPERTY_FLAG_RMAP_VALUE c. 若当前编辑控件是非map变量注册生成的,则需要传入默认flag,即PROPERTY_FLAG_DEFAULT |
- 描述 将指定的候选和属性进行绑定,需要和PROPERTY_CANDIDATE系列接口、PROPERTY、PROPERTY_SET_CANDIDATE等注册接口配合使用。使用场景和方法参考PROPERTY_CANDIDATE系列接口系列接口中的介绍。
(3)PROPERTY_FLAG_STYLE_RADIOBUTTON
描述 表示当前属性在属性面板中显示为单选按钮。目前此flag支持的变量类型为:枚举和候选(int/float/double/string)(其中候选创建请参考PROPERTY_CANDIDATE系列接口)。
示例
- 示例一:候选
REFLECTION_BEGIN(xx)
PROPERTY_CANDIDATE_BEGIN(Align, PROPERTY_CANDIDAE_DEFAULT)
PROPERTY_CANDIDATE_ITEM(Left,0)
PROPERTY_CANDIDATE_ITEM_SET_ICON(Left,EDITOR_UI_STATE_NORMAL, “xxx.png”)
PROPERTY_CANDIDATE_ITEM(Center,1)
PROPERTY_CANDIDATE_ITEM_SET_ICON(Center,EDITOR_UI_STATE_NORMAL, “xxx.png”)
PROPERTY_CANDIDATE_ITEM(Right,2)
PROPERTY_CANDIDATE_ITEM_SET_ICON(Right,EDITOR_UI_STATE_NORMAL, “xxx.png”)
PROPERTY_CANDIDATE_ITEM(Stretch,3)
PROPERTY_CANDIDATE_ITEM_SET_ICON(Stretch,EDITOR_UI_STATE_NORMAL, “xxx.png”)
PROPERTY_CANDIDATE_END
//“m_Test”表示变量,在实际应用的过程中,可以替换成其所支持的数据类型PROPERTY(Test, m_Test,**PROPERTY_FLAG_STYLE_RADIO****BUTTON**)
PROPERTY_SET_CANDIDATE(Test, Align, PROPERTY_FLAG_DEFAULT)
REFLECTION_END- 示例二:枚举
//枚举类型定义
enum EColumnAlignment
{
ECA_LEFT=0,
ECA_CENTER,
ECA_RIGHT,
ECA_STRETCH
}
REFLECTION_BEGIN(xx)
ENUM_PROPERTY(EColumnAlignment, NodeColumnAlignment, m_ColumnAlignment, PROPERTY_FLAG_STYLE_RADIOBUTTON)
REFLECTION_END- 面板中的显示样式
PROPERTY_FLAG_DISABLE
描述 用于设置属性在属性面板中不可进行编辑操作(对所有类型的反射均生效)
示例:
PROPERTY(NodeNumber,m_Number,PROPERTY_FLAG_DISABLE)
PROPERTY(NodeLabelText,m_Text,PROPERTY_FLAG_MULTIPLE_INPUT|PROPERTY_FLAG_DISABLE)- 面板中的显示样式 无样式改变,只是设置在面板中无法编辑的状态。
PROPERTY_FLAG_ICON
描述 标记当前设置的信息是和属性图标(面板中显示在属性名称的左侧)有关,在属性名称无效时属性图标可代替属性名称来区分不同的属性。 和变量类型无关,所有的数据类型均可使用该flag。
示例:
//先进行属性注册
PROPERTY(NodeBorderShadowDisplay,m_Test,PROPERTY_FLAG_DEFAULT)
//再设置属性图标
PROPERTY_SET_ICON(NodeBorderShadowDisplay,PROPERTY_FLAG_ICON,"xxx.png")(设置属性“NodeBorderShadowDisplay”图标的路径信息)PROPERTY_FLAG_LINEEDIT_ECHO_MODE_PASSWORD
描述 和单行输入框组合使用,设置当前输入框显示模式为密码形式。
示例:
PROPERTY(SignPassword, m_SignPassword, PROPERTY_FLAG_LINEEDIT_ECHO_MODE_PASSWORD)- 面板中的显示样式
PROPERTY_FLAG_DISABLE_RESET
描述 表示当前属性不参与属性值的重置操作。
示例:
//设置属性不参与重置功能
PROPERTY(ShaderType, m_ShaderType, PROPERTY_FLAG_STYLE_COMBOBOX | PROPERTY_FLAG_DISABLE_RESET)浮点型
可引用的注册接口
请点击对应的接口名称跳转至上文查看接口使用方法。
| 接口名称 | 接口描述 |
|---|---|
| PROPERTY | 用于非Map变量属性注册 |
| PROPERTY_RANGE | 非Map变量属性注册并配置变量范围 |
| PROPERTY_FLAG_RANGE | 非Map变量属性注册并配置变量范围以及对应的Flag |
| PROPERTY_HIDE | 在编辑器属性面板中隐藏属性 |
| PROPERTY_INVISIBLE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,但占位) |
| PROPERTY_GONE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,也不占位) |
| PROPERTY_SET_ICON | 设置面板中属性的图标 |
| PROPERTY_SET_UNIT | 设置属性输入框中内容的单位名称 |
| PROPERTY_SET_RANGE | 设置非Map变量属性的范围 |
| PROPERTY_SET_SLIDER_STEPLENGTH | 设置带有滑动条的非Map变量属性的滑动步长 |
| PROPERTY_SET_ENABLE | 设置属性在面板中的可编辑性 |
| PROPERTY_SET_DECIMALS | 设置浮点型属性的小数保留位数 |
PROPERTY_SET_DECIMALS(propertyName,decimals,flag)
- 参数
| 名称 | 描述 |
|---|---|
| propertyName | 属性名称 |
| decimals | 保留的小数点位数,int类型 |
| flag | Flag有以下几种类型可供选择设置: a. 若当前编辑控件是map变量中key值注册生成的,则需要传入PROPERTY_FLAG_RMAP_KEY b. 若当前编辑控件是map变量中value值注册生成的,则需要传入PROPERTY_FLAG_RMAP_VALUE c. 若当前编辑控件是非map变量注册生成的,则需要传入默认flag ,即PROPERTY_FLAG_DEFAULT |
描述 用来给浮点型属性变量设置在面板中显示的小数点位数
示例:
//设置小数的位数是2
PROPERTY_SET_DECIMALS(NodeSize,2,PROPERTY_FLAG_DEFAULT)可引用的flag
请点击对应的flag名称跳转至上文查看具体的介绍和使用方法。
| Flag名称 | Flag描述 |
|---|---|
| PROPERTY_FLAG_DEFAULT | 默认flag |
| PROPERTY_FLAG_STYLE_COMBOBOX | 下拉列表 |
| PROPERTY_FLAG_STYLE_RADIOBUTTON | 单选按钮 |
| PROPERTY_FLAG_STYLE_SLIDER | 带有滑动条的输入框 |
| PROPERTY_FLAG_DISABLE | 设置属性在面板中不允许编辑 |
| PROPERTY_FLAG_ICON | 标记当前设置的信息是属性名称左侧显示的图标 |
| PROPERTY_FLAG_DISABLE_RESET | 设置当前属性不参与属性值的重置 |
string
可引用的注册接口
请点击对应的接口名称跳转至上文查看接口使用方法。
| 接口名称 | 接口描述 |
|---|---|
| PROPERTY | 用于非Map变量属性注册 |
| PROPERTY_HIDE | 在编辑器属性面板中隐藏属性 |
| PROPERTY_INVISIBLE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,但占位) |
| PROPERTY_GONE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,也不占位) |
| PROPERTY_SET_TITLE_NAME | 设置当前属性面板的显示名称 |
| PROPERTY_SET_ICON | 设置面板中属性的图标 |
| PROPERTY_SET_UNIT | 设置属性输入框中内容的单位名称 |
| PROPERTY_SET_REGEXP | 设置字符串属性的正则表达式,为字符串的显示内容添加限制条件 |
| PROPERTY_SET_ENABLE | 设置属性在面板中的可编辑性 |
PROPERTY_SET_TITLE_NAME(propName)
- 参数
| 名称 | 描述 |
|---|---|
| propName | 属性名称 |
描述 表示当前属性面板的名称由指定属性值(string类型)来控制
示例:
//注册属性
PROPERTY(HierarchyName, m_HierarchyName, PROPERTY_FLAG_DEFAULT)
//表示属性面板名称由变量m_HierarchyName控制
PROPERTY_SET_TITLE_NAME(HierarchyName)PROPERTY_SET_REGEXP(propertyName,regExp,flag)
- 参数
| 名称 | 描述 |
|---|---|
| propertyName | 属性名称 |
| regExp | 正则表达式字符串 |
| flag | Flag有以下几种类型可供选择设置: a. 若当前编辑控件是map变量中key值注册生成的,则需要传入PROPERTY_FLAG_RMAP_KEY b. 若当前编辑控件是map变量中value值注册生成的,则需要传入PROPERTY_FLAG_RMAP_VALUE 若当前编辑控件是非map变量注册生成的,则需要传入默认flag ,即PROPERTY_FLAG_DEFAULT |
描述 用来给字符串类型属性变量设置正则表达式
示例:
//设置属性ID需要满足的条件“不能是中文”,用户可根据自己的实际需求设置正则表达式
PROPERTY_SET_REGEXP(ID, "^[^\u4e00-\u9fa5]{0,}$", PROPERTY_FLAG_DEFAULT)可引用的flag
请点击对应的flag名称跳转至上文查看具体的介绍和使用方法。
| Flag名称 | Flag描述 |
|---|---|
| PROPERTY_FLAG_DEFAULT | 默认flag |
| PROPERTY_FLAG_STYLE_COMBOBOX | 下拉列表 |
| PROPERTY_FLAG_STYLE_RADIOBUTTON | 单选按钮 |
| PROPERTY_FLAG_STYLE_MULTIPLE_INPUT | 多行文本输入框 |
| PROPERTY_FLAG_DISABLE | 设置属性在面板中不允许编辑 |
| PROPERTY_FLAG_ICON | 标记当前设置的信息是属性名称左侧显示的图标 |
| PROPERTY_FLAG_DISABLE_RESET | 设置当前属性不参与属性值的重置 |
PROPERTY_FLAG_STYLE_MULTIPLE_INPUT
描述 表示当前属性在属性面板中显示为多行文本输入框。目前支持的变量类型为:std::string
示例:
//“m_Text”变量,替换成实际的变量即可
PROPERTY(NodeLabelText,m_Text, PROPERTY_FLAG_STYLE_MULTIPLE_INPUT)- 面板中的显示样式
bool
可引用的注册接口
请点击对应的接口名称跳转至上文查看接口使用方法。
| 接口名称 | 接口描述 |
|---|---|
| PROPERTY | 用于非Map变量属性注册 |
| PROPERTY_HIDE | 在编辑器属性面板中隐藏属性 |
| PROPERTY_INVISIBLE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,但占位) |
| PROPERTY_GONE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,也不占位) |
| PROPERTY_SET_ICON | 设置面板中属性的图标 |
| PROPERTY_SET_BUTTON_STATE | 设置双态按钮不同状态下显示的文本内容 |
| PROPERTY_SET_ENABLE | 设置属性在面板中的可编辑性 |
PROPERTY_SET_BUTTON_STATE(propName,state,name,flag)
- 参数
| 名称 | 描述 |
|---|---|
| propName | 属性名称 |
| state | 双态按钮的两种状态: a. PROPERTY_FLAG_STATE_NEGATIVE表示按钮的非激活状态,即bool变量值为false b. PROPERTY_FLAG_STATE_POSITIVE表示按钮的激活状态,即bool变量值为true |
| name | 按钮显示的文本内容 |
| flag | Flag有以下几种类型可供选择设置: a. 若当前双态按钮是map变量中key值注册生成的,则需要传入PROPERTY_FLAG_RMAP_KEY b. 若当前双态按钮是map变量中value值注册生成的,则需要传入PROPERTY_FLAG_RMAP_VALUE c. 若当前双态按钮是非map变量注册生成的,则需要传入默认flag ,即PROPERTY_FLAG_DEFAULT |
描述 用来设置双态按钮不同激活状态下背景图标的路径,目前支持的变量类型为:bool
示例:
//其中“New”就是按钮显示的文本内容
PROPERTY_SET_BUTTON_STATE(NodeNewPageHierarchy,PROPERTY_FLAG_STATE_NEGATIVE,New,PROPERTY_FLAG_DEFAULT)可引用的flag
请点击对应的flag名称跳转至上文查看具体的信息和使用方法。
| Flag名称 | Flag描述 |
|---|---|
| PROPERTY_FLAG_DEFAULT | 默认flag |
| PROPERTY_FLAG_STYLE_BUTTON | 双态按钮 |
| PROPERTY_FLAG_EXTRA_APPLY_TO_CHILDREN | 标记当前属性是否应用到子节点中 |
| PROPERTY_FLAG_DISABLE | 设置属性在面板中不允许编辑 |
| PROPERTY_FLAG_ICON | 标记当前设置的信息是属性名称左侧显示的图标 |
| PROPERTY_FLAG_STATE_NEGATIVE | 标记双态按钮的非激活状态,此时状态值为false |
| PROPERTY_FLAG_STATE_POSITIVE | 标记双态按钮的激活状态,此时状态值为true |
| PROPERTY_FLAG_DISABLE_RESET | 设置当前属性不参与属性值的重置 |
PROPERTY_FLAG_STYLE_BUTTON
描述 表示当前属性在属性面板中显示为按钮。该按钮提供两种状态的切换:true或者false,用户可根据两种状态做实际的逻辑处理,应用场景如粒子或者动画进行播放和暂停。目前此flag支持的变量类型为:bool
示例:
PROPERTY(State,m_IsPlay,PROPERTY_FLAG_STYLE_BUTTON)- 面板中的显示样式
PROPERTY_FLAG_EXTRA_APPLY_TO_CHILDREN
描述 用来设置当前的属性是否一块应用到当前节点的子节点中。编辑器内部应用的实例:射线检测勾选框。目前支持的变量类型为:bool
示例:
PROPERTY(Raycast, m_bIsRaycastTarget, PROPERTY_FLAG_EXTRA_APPLY_TO_CHILDREN)- 面板中的显示样式
PROPERTY_FLAG_STATE_NEGATIVE
描述 表示双态按钮的非激活状态,此时状态值为false。可以和EDITOR_UI_STATE_NORMAL、EDITOR_UI_STATE_PRESS、EDITOR_UI_STATE_HOVER配合进行位运算,设置双态按钮在非激活状态时针对以上三种操作状态不同的显示形式。
示例:
PROPERTY_SET_BUTTON_STATE(NodeNewPageHierarchy,PROPERTY_FLAG_STATE_NEGATIVE|EDITOR_UI_STATE_PRESS,New,PROPERTY_FLAG_DEFAULT)PROPERTY_FLAG_STATE_POSITIVE
描述 表示双态按钮的激活状态,此时状态值为true。可以和EDITOR_UI_STATE_NORMAL、EDITOR_UI_STATE_PRESS、EDITOR_UI_STATE_HOVER配合进行位运算,设置双态按钮在激活状态时针对以上三种操作状态不同的显示形式。
示例:
PROPERTY_SET_BUTTON_STATE(NodeNewPageHierarchy,PROPERTY_FLAG_STATE_POSITIVE|EDITOR_UI_STATE_PRESS,New,PROPERTY_FLAG_DEFAULT)枚举
可引用的注册接口
请点击对应的接口名称跳转至上文查看接口使用方法。
| 接口名称 | 接口描述 |
|---|---|
| ENUM_PROPERTY | 枚举类型变量属性注册 |
| PROPERTY_HIDE | 在编辑器属性面板中隐藏属性 |
| PROPERTY_INVISIBLE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,但占位) |
| PROPERTY_GONE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,也不占位) |
| PROPERTY_SET_ICON | 设置面板中属性的图标 |
| PROPERTY_SET_ENABLE | 设置属性在面板中的可编辑性 |
| ENUM系列接口: 1) ENUM_BEGIN 2) ENUM 3) ENUM_SET_ICON 4) ENUM_END | 注册枚举项,用于后续的枚举属性注册 |
ENUM接口
ENUM_BEGIN(enumTypeName, reflectName) ENUM(displayName, varName) ENUM_SET_ICON(displayName, state,iconPath) ENUM_END
- 参数
| 宏定义接口 | 名称 | 描述 |
|---|---|---|
| ENUM_BEGIN | enumTypeName | 枚举类型名称 |
| reflectName | 注册在反射系统中使用的枚举名称 | |
| ENUM | displayName | 枚举项在面板中显示的名称 |
| varName | 枚举项在枚举类型中实际的值 | |
| ENUM_SET_ICON | displayName | 在ENUM中定义的displayName |
| state | 表示在单选按钮中按钮在不同状态下的背景图标,分别是以下三种状态: a. 默认状态EDITOR_UI_STATE_NORMAL b. 鼠标点击状态EDITOR_UI_STATE_PRESS c. 鼠标悬停状态EDITOR_UI_STATE_HOVER | |
| iconPath | 用于背景图标的路径 |
描述 ENUM系列接口主要是为了能够将枚举类型的信息注册在反射系统中,和ENUM_PROPERTY配合使用,在面板中通过下拉框或者单选按钮的形式将每一项展示出来,以供用户选择。
示例
//保证文件中有定义枚举类型
enum class ProjectType
{
PT_NONE=0,
PT_TYPE1
}
//在脚本cpp文件中参考下面的内容注册枚举,注意此注册信息要写在REFLECTION_BEGIN宏的外部
ENUM_BEGIN(ProjectType, NodeProjectType)
ENUM(PT_2D, ProjectType::PT_2D)
ENUM(PT_TEMPLATE_LIB,ProjectType::PT_TEMPLATE_LIB)
ENUM_SET_ICON(PT_TEMPLATE_LIB,EDITOR_UI_STATE_NORMAL,”xxx.png”)
ENUM_ENDREFLECTION_BEGIN(xxx)
//******属性注册******//
REFLECTION_ENDENUM_PROPERTY(enumName,reflectName,varName,flags)
- 参数
| 名称 | 描述 |
|---|---|
| enumName | 枚举类型的名称 |
| reflectName | 属性名称 |
| varName | 枚举变量 |
| flags | Flag: a. 如果显示为下拉框样式,flag为默认值PROPERTY_FLAG_DEFAULT b. 如果显示为“单选按钮”的样式,flag则可设置为PROPERTY_FLAG_STYLE_RADIOBUTTON |
- 描述 用于枚举类型的属性变量注册
- 示例
//保证文件中有定义枚举类型
enum class ProjectType
{
PT_NONE=0,
PT_TYPE1
}
//在脚本cpp文件中参考下面的内容注册枚举,注意此注册信息要写在**REFLECTION_BEGIN**宏的外部
ENUM_BEGIN(ProjectType, NodeProjectType)
ENUM(PT_2D, ProjectType::PT_2D)
ENUM(PT_TEMPLATE_LIB,ProjectType::PT_TEMPLATE_LIB)
ENUM_SET_ICON(PT_TEMPLATE_LIB,EDITOR_UI_STATE_NORMAL,”xxx.png”)
ENUM_END
REFLECTION_BEGIN(xx)
//其中“PROPERTY_FLAG_DEFAULT”标记此枚举属性在面板中显示为下拉框,用户可根据实际需求自行修改
ENUM_PROPERTY(ProjectType,Type,m_Type, PROPERTY_FLAG_DEFAULT)
REFLECTION_END可引用的flag
请点击对应的flag名称跳转至上文查看具体的信息和使用方法。
| Flag名称 | Flag描述 |
|---|---|
| PROPERTY_FLAG_DEFAULT | 默认flag |
| PROPERTY_FLAG_STYLE_RADIOBUTTON | 单选按钮 |
| PROPERTY_FLAG_DISABLE | 设置属性在面板中不允许编辑 |
| PROPERTY_FLAG_ICON | 标记当前设置的信息是属性名称左侧显示的图标 |
| PROPERTY_FLAG_DISABLE_RESET | 设置当前属性不参与属性值的重置 |
向量
目前向量支持的具体数据类型如下:Vector2、Vector2i、Vector3、Vector3i、Vector4、Vector4i、Rectf、Recti。
可引用的注册接口
请点击对应的接口名称跳转至上文查看接口使用方法。
| 接口名称 | 接口描述 |
|---|---|
| PROPERTY | 用于非Map变量属性注册 |
| PROPERTY_RANGE | 非Map变量属性注册并配置变量范围 |
| PROPERTY_FLAG_RANGE | 非Map变量属性注册并配置变量范围以及对应的Flag |
| PROPERTY_HIDE | 在编辑器属性面板中隐藏属性 |
| PROPERTY_INVISIBLE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,但占位) |
| PROPERTY_GONE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,也不占位) |
| PROPERTY_SET_ICON | 设置面板中属性的图标 |
| PROPERTY_SET_FIELD_NAME | 设置类似Position等属性中XYZ轴对应的子文本名称 |
| PROPERTY_SET_FIELD_TIP | 设置类似Position等属性中XYZ轴对应的子文本的toolTip名称 |
| PROPERTY_SET_UNIT | 设置属性输入框中内容的单位名称 |
| PROPERTY_SET_DECIMALS | 设置浮点型属性的小数保留位数 |
| PROPERTY_SET_RANGE | 设置非Map变量属性的范围 |
| PROPERTY_SET_ENABLE | 设置属性在面板中的可编辑性 |
PROPERTY_SET_FIELD_NAME(propName,name,flag)
- 参数
| 名称 | 描述 |
|---|---|
| propName | 属性名称 |
| name | 面板中显示的文本内容 |
| flag | Flag有以下几种类型可供选择设置: a. 若当前编辑控件是map变量中key值注册生成的,则需要传入PROPERTY_FLAG_RMAP_KEY b. 若当前编辑控件是map变量中value值注册生成的,则需要传入PROPERTY_FLAG_RMAP_VALUE c. 若当前编辑控件是非map变量注册生成的,则需要传入默认flag,即PROPERTY_FLAG_DEFAULT |
- 描述 用来设置向量生成的编辑控件对应的文本显示内容,如Vector2中默认情况下显示的名称是“X”“Y”,通过此接口可以将默认名称修改成实际需要显示的内容。目前支持的变量类型为:Vector2、Vector2i、Vector3、Vector3i、Vector4、Vector4i、Rectf、Recti。
- 示例
PROPERTY_SET_FIELD_NAME(RTTIPosoffset, “W;H”,PROPERTY_FLAG_DEFAULT)- 面板中的显示样式
PROPERTY_SET_FIELD_TIP(propName,tip,flag)
- 参数
| 名称 | 描述 |
|---|---|
| propName | 属性名称 |
| tip | 面板中编辑控件在鼠标悬停状态下显示的文本内容 |
| flag | Flag有以下几种类型可供选择设置: a. 若当前编辑控件是map变量中key值注册生成的,则需要传入PROPERTY_FLAG_RMAP_KEY b. 若当前编辑控件是map变量中value值注册生成的,则需要传入PROPERTY_FLAG_RMAP_VALUE c. 若当前编辑控件是非map变量注册生成的,则需要传入默认flag ,即PROPERTY_FLAG_DEFAULT |
- 描述 用来设置向量生成的编辑控件在鼠标悬停状态下显示的的文本内容,如Vector2中默认情况下显示tip名称是“X”“Y”,通过此接口可以将默认名称修改成实际需要显示的内容。目前支持的变量类型为:Vector2、Vector2i、Vector3、Vector3i、Vector4、Vector4i、Rectf、Recti。
- 示例
PROPERTY_SET_FIELD_TIP(RTTIPosoffset, "PosX;PosY;PosZ", PROPERTY_FLAG_DEFAULT)可引用的flag
请点击对应的flag名称跳转至上文查看具体的信息和使用方法。
| Flag名称 | Flag描述 |
|---|---|
| PROPERTY_FLAG_DEFAULT | 默认flag |
| PROPERTY_FLAG_DISABLE | 设置属性在面板中不允许编辑 |
| PROPERTY_FLAG_ICON | 标记当前设置的信息是属性名称左侧显示的图标 |
| PROPERTY_FLAG_DISABLE_RESET | 设置当前属性不参与属性值的重置 |
颜色
目前颜色支持的具体数据类型如下:Color、Color32、HDRColor。 面板中显示的样式如下: Color、Color32: 
HDRColor: 
可引用的注册接口
请点击对应的接口名称跳转至上文查看接口使用方法。
| 接口名称 | 接口描述 |
|---|---|
| PROPERTY | 用于非Map变量属性注册 |
| PROPERTY_HIDE | 在编辑器属性面板中隐藏属性 |
| PROPERTY_INVISIBLE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,但占位) |
| PROPERTY_GONE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,也不占位) |
| PROPERTY_SET_ICON | 设置面板中属性的图标 |
| PROPERTY_SET_ENABLE | 设置属性在面板中的可编辑性 |
可引用的flag
请点击对应的flag名称跳转至上文查看具体的信息和使用方法。
| Flag名称 | Flag描述 |
|---|---|
| PROPERTY_FLAG_DEFAULT | 默认flag |
| PROPERTY_FLAG_DISABLE | 设置属性在面板中不允许编辑 |
| PROPERTY_FLAG_ICON | 标记当前设置的信息是属性名称左侧显示的图标 |
| PROPERTY_FLAG_DISABLE_RESET | 设置当前属性不参与属性值的重置 |
资源类型
目前资源类型支持的数据类型如下:std::string、ActorRef、NActorPtr、NActorRef、EngineGUID、Object*(或者是继承Object的子类指针对象)。 资源类型在面板中显示的样式如下:
- std::string

- ActorRef、NActorPtr、NActorRef、EngineGUID、Object(或者是继承Object的子类指针对象)
可引用的注册接口
请点击对应的接口名称跳转至上文查看接口使用方法。
| 接口名称 | 接口描述 |
|---|---|
| PROPERTY | 用于非Map变量属性注册 |
| PROPERTY_HIDE | 在编辑器属性面板中隐藏属性 |
| PROPERTY_INVISIBLE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,但占位) |
| PROPERTY_GONE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,也不占位) |
| PROPERTY_SET_ICON | 设置面板中属性的图标 |
| PROPERTY_SET_ENABLE | 设置属性在面板中的可编辑性 |
| PROPERTY_SET_FILTER | 设置绑定资源文件的一类属性中,绑定文件的可选范围 |
PROPERTY_SET_FILTER(propName,type,filter,flag)
- 参数
| 名称 | 描述 |
|---|---|
| propName | 属性名称 |
| type | 目前type只有PROPERTY_FLAG_FILTE_SUFFIX类型,表示以文件的后缀作为过滤条件 |
| filter | 传入当前属性需要满足的后缀条件,为字符串类型,写法参考如下“png;jpg”即当前属性只支持png和jpg类型的文件 |
| flag | Flag有以下几种类型可供选择设置: a. 若当前编辑控件是map变量中key值注册生成的,则需要传入PROPERTY_FLAG_RMAP_KEY b. 若当前编辑控件是map变量中value值注册生成的,则需要传入PROPERTY_FLAG_RMAP_VALUE c. 若当前编辑控件是非map变量注册生成的,则需要传入默认flag,即PROPERTY_FLAG_DEFAULT |
- 描述 用于设置资源文件过滤类型,传入的类型是一个string字符串,不同的类型以分号拼接在一起(目前仅支持通过文件后缀的形式过滤,即type为PROPERTY_FLAG_FILTE_SUFFIX的形式)
- 示例
//示例一:
//表示当前属性只支持后缀为png和jpg格式的文件
PROPERTY_SET_FILTER(displayName,PROPERTY_FLAG_FILTE_SUFFIX,“png;jpg”,PROPERTY_FLAG_DEFAULT)
//示例二:
//表示当前属性只支持后缀为png格式的文件
PROPERTY_SET_FILTER(displayName,PROPERTY_FLAG_FILTE_SUFFIX,“png”,PROPERTY_FLAG_DEFAULT)可引用的flag
请点击对应的flag名称跳转至上文查看具体的信息和使用方法。
| Flag名称 | Flag描述 |
|---|---|
| PROPERTY_FLAG_STYLE_RESOURCE_PIXMAP | 用于图片在属性面板中的显示 |
| PROPERTY_FLAG_STYLE_RESOURCE_TEXT | 文本文件在属性面板中的显示 |
| PROPERTY_FLAG_STYLE_FILE | 用于文件在属性面板中显示,仅显示文件的路径信息 |
| PROPERTY_FLAG_STYLE_FOLDER | 用于文件夹在属性面板中的显示,仅显示文件夹的路径信息 |
| PROPERTY_FLAG_FILTE_SUFFIX | 表示当前通过文件后缀来过滤文件 |
| PROPERTY_FLAG_STYLE_OBJECT | 用于在面板中显示为资源选择器的编辑控件 |
| PROPERTY_FLAG_FILTER_LABEL | 表示Actor的可选范围仅包含LabelActor类型的Actor |
| PROPERTY_FLAG_FILTER_CAMERA | 表示Actor的可选范围仅包含CameraActor类型的Actor |
| PROPERTY_FLAG_FILTER_IMAGE | 表示Actor的可选范围仅包含ImageActor类型的Actor |
| PROPERTY_FLAG_FILTER_UI | 表示Actor的可选范围仅包含LabelActor、ImageActor、PanelActor和ButtonActor类型的Actor |
| PROPERTY_FLAG_FILTER_POSTPROCESS | 表示脚本的可选范围仅包含后处理类型的脚本 |
| PROPERTY_FLAG_OBJECT_EXPAND | 设置Object列表是否需要将各个元素分别展开显示在不同的子面板中 |
| PROPERTY_FLAG_DISABLE | 设置属性在面板中不允许编辑 |
| PROPERTY_FLAG_ICON | 标记当前设置的信息是属性名称左侧显示的图标 |
| PROPERTY_FLAG_DISABLE_RESET | 设置当前属性不参与属性值的重置 |
PROPERTY_FLAG_STYLE_RESOURCE_PIXMAP
- 描述 表示当前属性在属性面板中为图片的展示。根据图片路径值(std::string)在属性面板生成图片,并支持从编辑器资源面板拖拽文件(目前支持的文件格式:png、jpg、tag、ktx、rt)到属性面板来更换显示的图片。 如果需要添加仅支持特定文件的限制,请参考PROPERTY_SET_FILTER和PROPERTY_FLAG_FILTE_SUFFIX的用法。
- 示例
PROPERTY(MainTexture, m_Path, PROPERTY_FLAG_STYLE_RESOURCE_PIXMAP)- 面板中的显示样式
PROPERTY_FLAG_STYLE_RESOURCE_TEXT
- 描述 表示当前属性在属性面板中显示为文件的绑定框。将传入的文件(支持的文件类型:rt、nmat)路径值显示在面板中,并支持拖拽文件(目前支持的文件格式:rt、nmat)到属性面板切换绑定的文件。目前此Flag支持的变量类型为:std::string。 如果需要添加仅支持特定文件的限制,请参考PROPERTY_SET_FILTER和PROPERTY_FLAG_FILTE_SUFFIX的用法。
- 示例
PROPERTY(Animation File, m_FileName, PROPERTY_FLAG_STYLE_RESOURCE)- 面板中的显示样式
PROPERTY_FLAG_STYLE_FILE
- 描述 用于弹出资源管理器弹窗,获取文件的路径并显示在面板中。目前此flag支持的变量类型为:std::string。 如果需要添加仅支持特定文件的限制,请参考PROPERTY_SET_FILTER和PROPERTY_FLAG_FILTE_SUFFIX的用法
- 示例
PROPERTY(SelectFile,m_Path,PROPERTY_FLAG_STYLE_FILE)- 面板中的显示样式
PROPERTY_FLAG_STYLE_FOLDER
- 描述 用于弹出资源管理器弹窗,在弹窗中选择对应的文件夹路径。目前此flag支持的变量类型为:std::string。 如果需要添加仅支持特定文件的限制,请参考PROPERTY_SET_FILTER和PROPERTY_FLAG_FILTE_SUFFIX的用法。
- 示例
PROPERTY(SelectFile,m_Path,PROPERTY_FLAG_STYLE_FOLDER)- 面板中的显示样式
PROPERTY_FLAG_FILTE_SUFFIX
- 描述 表示当前通过文件后缀来过滤文件。在设置满足条件的多个后缀信息时,后缀之间通过“;”将多个信息拼接成字符串。目前支持的变量类型为std::string。
- 示例 PROPERTY_SET_FILTER(displayName,PROPERTY_FLAG_FILTE_SUFFIX, “png;jpg”)(表示当前仅支持“png和jpg”两种格式的文件)
PROPERTY_FLAG_STYLE_OBJECT
- 描述 此flag的作用是在编辑器属性面板中创建一个可供选择资源的弹窗。目前支持Object及其子类的反射,若当前变量类型是Actor(继承Object)对象,则弹窗中默认为场景树中所有显示的节点,若不想要显示所有的节点,可以添加节点类型的限制(参考FILTER类型flag,如PROPERTY_FLAG_FILTER_LABEL的注释)。目前支持的变量类型为:ActorRef、NActorPtr、NActorRef、EngineGUID、Object*(或者是继承Object的子类指针对象)。
- 示例
PROPERTY(RenderCamera,m_RenderCamera, PROPERTY_FLAG_STYLE_OBJECT)- 面板中的显示样式 如下图所示,在点击右侧的锥体按钮后,会显示“选择资源”的弹窗 
针对资源弹窗中显示的内容可以添加一些限制,比如只显示含有Label组件的actor等,在注册属性的时候除了PROPERTY_FLAG_STYLE_OBJECT之外需要增加额外的flag限制。
(1)PROPERTY_FLAG_FILTER_LABEL - 描述 用于Actor对象的反射,和PROPERTY_FLAG_STYLE_OBJECT一起使用,过滤掉除包含Label组件以外的其它Actor。目前支持的变量类型为:ActorRef、NActorPtr、NActorRef。
- 示例
PROPERTY(TestActor,m_Actor,PROPERTY_FLAG_STYLE_OBJECT|PROPERTY_FLAG_FILTER_LABEL)(2)PROPERTY_FLAG_FILTER_CAMERA - 描述 用于Actor对象的反射,和PROPERTY_FLAG_STYLE_OBJECT一起使用,过滤掉除包含Camera组件以外的其它Actor。目前支持的变量类型为:ActorRef、NActorPtr、NActorRef。
- 示例
PROPERTY(TestActor,m_Actor,PROPERTY_FLAG_STYLE_OBJECT|PROPERTY_FLAG_FILTER_CAMERA)(3)PROPERTY_FLAG_FILTER_IMAGE - 描述 用于Actor对象的反射,和PROPERTY_FLAG_STYLE_OBJECT一起使用,过滤掉除包含Image组件以外的其它Actor。目前支持的变量类型为:ActorRef、NActorPtr、NActorRef。
- 示例
PROPERTY(TestActor,m_Actor,PROPERTY_FLAG_STYLE_OBJECT|PROPERTY_FLAG_FILTER_IMAGE)(4)PROPERTY_FLAG_FILTER_UI - 描述 用于Actor对象的反射,和PROPERTY_FLAG_STYLE_OBJECT一起使用,过滤掉除包含Label、Image、Panel、Button组件以外的其它Actor。目前支持的变量类型为:ActorRef、NActorPtr、NActorRef。
- 示例
PROPERTY(TestActor,m_Actor,PROPERTY_FLAG_STYLE_OBJECT|PROPERTY_FLAG_FILTER_UI)(5)PROPERTY_FLAG_FILTER_POSTPROCESS
- 描述 用于Object对象的反射,和PROPERTY_FLAG_STYLE_OBJECT一起使用,过滤掉非后处理组件的脚本。目前支持的变量类型为:Object*、EngineGUID
- 示例
PROPERTY(PostProcessing List,
m_CustomPostProcessGUIDs,
PROPERTY_FLAG_STYLE_OBJECT|PROPERTY_FLAG_FILTER_POSTPROCESS|
PROPERTY_FLAG_OBJECT_EXPAND)(6)PROPERTY_FLAG_OBJECT_EXPAND - 描述 用于设置Object(不包含Actor,Texture,RenderTexture)或者EngineGUID类型是否单独在另外的子面板中显示其cpp文件中注册的属性,目前支持的变量类型为:Object*(或者是继承Object的子类指针对象)、EngineGUID
- 示例
PROPERTY(PostProcessing List,m_CustomPostProcessGUIDs,
PROPERTY_FLAG_STYLE_OBJECT|PROPERTY_FLAG_FILTER_POSTPROCESS|
PROPERTY_FLAG_OBJECT_EXPAND)容器
目前容器中支持的具体数据类型如下:std::vector、std::map。
std::vector
std::vector容器的子元素支持的数据类型为:整型、浮点型、string、bool、枚举、向量、颜色、资源类型等。
std::vector容器在使用注册时,主要是根据子元素的类型选择对应的反射接口或者flag。比如声明一个变量:std::vector< int > m_TestVector,子元素是int类型,那么在注册属性时,需要查看int类型所支持的flag以及接口: 如果想要呈现一个基础输入框的形式,那么: PROPERTY(TestVector,m_TestVector,PROPERTY_FLAG_DEFAULT) 如果想要呈现带有滑动条效果的样式,那么: PROPERTY(TestVector,m_TestVector,PROPERTY_FLAG_STYLE_SLIDER)
所以相对于非std::vector的基础类型,std::vector可以动态改变元素的数量,其它的使用和显示效果都是一样的。
可引用的注册接口
请点击对应的接口名称跳转至上文查看接口使用方法。
| Flag名称 | Flag描述 |
|---|---|
| PROPERTY | 用于非Map变量属性注册 |
| PROPERTY_RANGE | 非Map变量属性注册并配置变量范围 |
| PROPERTY_FLAG_RANGE | 非Map变量属性注册并配置变量范围以及对应的Flag |
| PROPERTY_HIDE | 在编辑器属性面板中隐藏属性 |
| PROPERTY_INVISIBLE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,但占位) |
| PROPERTY_GONE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,也不占位) |
| PROPERTY_SET_ICON | 设置面板中属性的图标 |
| PROPERTY_SET_BUTTON_STATE | 设置双态按钮不同状态下显示的文本内容 |
| PROPERTY_SET_FIELD_NAME | 设置类似Position等属性中XYZ轴对应的子文本名称 |
| PROPERTY_SET_FIELD_TIP | 设置类似Position等属性中XYZ轴对应的子文本的toolTip名称 |
| PROPERTY_SET_UNIT | 设置属性输入框中内容的单位名称 |
| PROPERTY_SET_DECIMALS | 设置浮点型属性的小数保留位数 |
| PROPERTY_SET_REGEXP | 设置字符串属性的正则表达式,为字符串的显示内容添加限制条件 |
| PROPERTY_SET_RANGE | 设置非Map变量属性的范围 |
| PROPERTY_SET_SLIDER_STEPLENGTH | 设置带有滑动条的非Map变量属性的滑动步长 |
| PROPERTY_SET_ELEMENT_NAME | 设置std::Vector容器中子元素的显示名称 |
| PROPERTY_SET_ENABLE | 设置属性在面板中的可编辑性 |
| PROPERTY_SET_FILTER | 设置绑定资源文件的一类属性中,绑定文件的可选范围 |
PROPERTY_SET_ELEMENT_NAME(propName,elementNameFormat)
- 参数
| 名称 | 描述 |
|---|---|
| propName | 属性名称 |
| elementNameFormat | std::vector数组中子元素对应的名称格式: a. “Test”,纯字符串形式,每个元素的名称保持一致 b. “Test%d”,在字符串任意位置插入编号(允许同时插入多个编号),编号默认从0开始,随元素个数累加 |
- 描述 用来给std::vector变量中子元素设置名称格式
- 示例
//注册vector反射
PROPERTY(NodePageLayoutPartition,m_LayoutPartitionName,PROPERTY_FLAG
_CONTAINER_CAPACITY_NONVARIABLE)
//设置元素名称格式为“PageLayoutPartition”+数字编号,如第一个元素名称是“PageLayoutPartition0”编号累加
PROPERTY_SET_ELEMENT_NAME(NodePageLayoutPartition, "PageLayoutPartition%d")可引用的flag
下面的表格中仅列出了一些std::vector新增的flag,若想要查看子元素可引用的flag,请根据其对应的数据类型去上文基础类型章节中1.1.1.1-1.1.1.8查找。
| Flag名称 | Flag描述 |
|---|---|
| PROPERTY_FLAG_CONTAINER_CAPACITY_HIDE | 用于设置容器反射中容量编辑框是否显示 |
PROPERTY_FLAG_CONTAINER_CAPACITY_HIDE
- 描述 用于std::vector、map此类容器的反射场景中,表示在面板中不再显示容量编辑框和当前属性的名称,编辑器内部使用实例,如材质的纹理偏移属性反射。目前支持的变量类型:std::vector、map
- 示例
//示例一:
//注册一个基础输入框的形式且元素数量无法更改
PROPERTY(Ints,m_Ints,PROPERTY_FLAG_CONTAINER_CAPACITY_HIDE)
//示例二:
//注册一个带滑动条的形式且元素数量无法更改
PROPERTY(Ints,m_Ints,PROPERTY_FLAG_CONTAINER_CAPACITY_HIDE|PROPERTY
_FLAG_STYLE_SLIDER)- 面板中的显示样式
std::map
std::map容器的key和value值支持的数据类型为:整型、浮点型、string、bool、枚举、向量、颜色、资源类型等。
std::map容器在使用注册时,主要是根据key和value值的类型选择对应的反射接口或者flag。比如声明一个变量:std::map<int,std::string> m_TestVector,根据key和value值的数据类型,分别查找int类型和std::string类型所支持的flag以及接口:
如果想要key值呈现带有滑动条效果的样式,value值就是一个基础输入框,那么: PROPERTY_MAP(TestMap,m_TestMap,PROPERTY_FLAG_STYLE_SLIDER,PROPERTY_FLAG_DEFAULT,PROPERTY_FLAG_DEFAULT)
从上面的例子可以看到,key值、value值以及整体的map都会对应一个flag的设置,三者独立设置,互不影响。
可引用的注册接口
请点击对应的接口名称跳转至上文查看接口使用方法。
| Flag名称 | Flag描述 |
|---|---|
| PROPERTY_MAP | 用于Map变量属性注册 |
| PROPERTY_HIDE | 在编辑器属性面板中隐藏属性 |
| PROPERTY_INVISIBLE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,但占位) |
| PROPERTY_GONE_NAME | 在属性面板中隐藏属性的属性名称(属性名称不显示,也不占位) |
| PROPERTY_SET_ICON | 设置面板中属性的图标 |
| PROPERTY_SET_BUTTON_STATE | 设置双态按钮不同状态下显示的文本内容 |
| PROPERTY_SET_FIELD_NAME | 设置类似Position等属性中XYZ轴对应的子文本名称 |
| PROPERTY_SET_FIELD_TIP | 设置类似Position等属性中XYZ轴对应的子文本的toolTip名称 |
| PROPERTY_SET_UNIT | 设置属性输入框中内容的单位名称 |
| PROPERTY_SET_DECIMALS | 设置浮点型属性的小数保留位数 |
| PROPERTY_SET_REGEXP | 设置字符串属性的正则表达式,为字符串的显示内容添加限制条件 |
| PROPERTY_SET_MAP_KEY_RANGE | 设置Map变量中Key值的设置范围 |
| PROPERTY_SET_MAP_VALUE_RANGE | 设置Map变量中Value值的设置范围 |
| PROPERTY_SET_MAP_KEY_SLIDER_STEPLENGTH | 设置带有滑动条的Map变量的Key对应的滑动步长 |
| PROPERTY_SET_MAP_VALUE_SLIDER_STEPLENGTH | 设置带有滑动条的Map变量的Value对应的滑动步长 |
| PROPERTY_SET_ENABLE | 设置属性在面板中的可编辑性 |
| PROPERTY_SET_FILTER | 设置绑定资源文件的一类属性中,绑定文件的可选范围 |
PROPERTY_MAP(propName,varName,keyFlags,valueFlags,mapFlags)
- 参数
| 名称 | 描述 |
|---|---|
| propName | 属性名称 |
| varName | 变量 |
| keyFlags | key值对应的反射flag |
| valueFlags | value值对应的反射flag |
| mapFlags | map容器对应的反射flag,目前仅PROPERTY_FLAG_CONTAINER_CAPACITY_HIDE、PROPERTY_FLAG_DISABLE和PROPERTY_FLAG_DEFAULT可设置 |
- 描述 用于map类型的属性变量注册。
- 示例
PROPERTY_MAP(TestDemo,m_Test,PROPERTY_FLAG_DEFAULT,PROPERTY_FLAG_SLIDER,PROPERTY_FLAG_DEFAULT)PROPERTY_SET_MAP_KEY_RANGE(propName,keyType,valueType,minValue,maxValue)
- 参数
| 名称 | 描述 |
|---|---|
| propertyName | 属性名称 |
| keyType | Key对应的变量类型 |
| valueType | value对应的变量类型 |
| minValue | 变量最小值 |
| maxValue | 变量最大值 |
- 描述 用来给map变量的key值设置数值的范围
- 示例
PROEPRTY_SET_MAP_KEY_RANG(NodeRotation, int, int,0, 360)PROPERTY_SET_MAP_VALUE_RANGE(propertyName,keyType,valueType,minValue,maxValue)
- 参数
| 名称 | 描述 |
|---|---|
| propertyName | 属性名称 |
| keyType | Key对应的变量类型 |
| valueType | value对应的变量类型 |
| minValue | 变量最小值 |
| maxValue | 变量最大值 |
- 描述 用来给map变量的value值设置数值的范围
- 示例
PROEPRTY_SET_MAP_VALUE_RANG(NodeRotation, int, int,0, 360)PROPERTY_SET_MAP_KEY_SLIDER_STEPLENGTH(propertyName,keyType,valueType,stepLength)
- 参数
| 名称 | 描述 |
|---|---|
| propertyName | 属性名称 |
| keyType | map变量中key值对应的数据类型 |
| valueType | map变量中value值对应的数据类型 |
| stepLength | 为map变量中key值注册生成的滚动条设置步长 |
- 描述 用来给map变量中key值注册生成的滑动条设置步长
- 示例
PROPERTY_SET_MAP_KEY_SLIDER_STEPLENGTH(TestDemo,int,int,10)PROPERTY_SET_MAP_VALUE_SLIDER_STEPLENGTH(propertyName,keyType,valueType,stepLength)
- 参数
| 名称 | 描述 |
|---|---|
| propertyName | 属性名称 |
| keyType | map变量中key值对应的数据类型 |
| valueType | map变量中value值对应的数据类型 |
| stepLength | 为map变量中value值注册生成的滚动条设置步长 |
- 描述 用来给map变量中value值注册生成的滑动条设置步长
- 示例
PROPERTY_SET_MAP_VALUE_SLIDER_STEPLENGTH(TestDemo,int,int,10)可引用的flag
下面的表格中仅列出了一些std::map容器新增的flag,若想要查看key值和value值可引用的flag,请根据其对应的数据类型去上文基础类型章节中1.1.1.1-1.1.1.8查找。
| Flag名称 | Flag描述 |
|---|---|
| PROPERTY_FLAG_CONTAINER_CAPACITY_HIDE | 用于设置容器反射中容量编辑框是否显示 |
| PROPERTY_FLAG_CONTAINER_KEY_AS_LABEL | 用于设置Map容器中key值不允许在面板中编辑 |
| PROPERTY_FLAG_RMAP_KEY | 标记当前设置的信息作用到map容器反射中的key值 |
| PROPERTY_FLAG_RMAP_VALUE | 标记当前设置的信息作用到map容器反射中的value值 |
PROPERTY_FLAG_RMAP_KEY
- 描述 标记当前设置的是map变量的key值对应的配置信息。
- 示例
//设置key值对应生成的双态按钮在非激活状态下的文本内容为“New
PROPERTY_SET_BUTTON_STATE(NodeNewPageHierarchy,PROPERTY_FLAG_STATE_
NEGATIVE,New,PROPERTY_FLAG_RMAP_KEY)PROPERTY_FLAG_CONTAINER_KEY_AS_LABEL
- 描述 仅用于map反射中key值对应的控件始终是Label,不允许进行编辑数值仅展示,编辑器内部使用的实例:如材质的纹理偏移反射属性。目前支持的变量类型为:map
- 示例
PROPERTY_MAP(Ints,m_Ints,PROPERTY_FLAG_CONTAINER_
KEY_AS_LABEL,PROPERTY_FLAG_DEFAULT, PROPERTY_FLAG_DEFAULT)- 面板中的显示样式
PROPERTY_FLAG_RMAP_VALUE
- 描述 标记当前设置的是map变量的value值对应的配置信息。
- 示例
//设置value值对应生成的双态按钮在非激活状态下的文本内容为“New”
PROPERTY_SET_BUTTON_STATE(NodeNewPageHierarchy,PROPERTY_FLAG_STATE
_NEGATIVE,New,PROPERTY_FLAG_RMAP_VALUE)函数反射
可引用的注册接口
| 接口名称 | 接口描述 |
|---|---|
| FUNCTION | 注册函数,用户可通过此注册信息执行此接口 |
| BIND_FUNCTION | 注册函数绑定框,用户可在面板中通过此绑定框进行回调函数的绑定 |
| BATCH_BIND系列接口 BATCH_BIND_FUNCTION_BEGIN BATCH_BIND_FUNCTION_END | 批量注册多组函数绑定框,其中BATCH_BIND_FUNCTION_END是批量注册结束的标志 |
FUNCTION(reflectName, className, funcName)
- 参数
| 名称 | 描述 |
|---|---|
| reflectName | 面板中显示的名称 |
| className | 函数所属类的类名 |
| funcName | 函数实际的名称 |
- 描述 注册函数
- 示例
FUNCTION(PostEditChangeProperty, Object, PostEditChangeProperty)BIND_FUNCTION(reflectName, className, funcName)
- 参数
| 名称 | 描述 |
|---|---|
| reflectName | 面板中显示的名称 |
| className | 函数所属类的类名 |
| funcName | 函数实际的名称 |
- 描述 用于注册函数绑定框,用户可在面板中通过此绑定框进行回调函数(来源FUNCTION注册的函数)的绑定
- 示例
//“Object”表示当前所在组件的名称,可替换成实际的组件名称
BIND_FUNCTION(OnValueChanged, Object, OnValueChanged)- 面板中的显示样式

BATCH_BIND系列接口
BATCH_BIND_FUNCTION_BEGIN(displayName) BATCH_BIND_FUNCTION_END
- 参数
| 名称 | 描述 |
|---|---|
| displayName | 面板中显示的名称 |
- 描述 用于批量注册多组函数绑定框的开始和结束标志,在BATCH_BIND_FUNCTION_BEGIN和BATCH_BIND_FUNCTION_END之间可以插入多个BIND_FUNCTION的注册。
- 示例
BATCH_BIND_FUNCTION_BEGIN(Add New Event Type)
BIND_FUNCTION(PointerEnter, EventTrigger, OnPointerEnterFunc)
BIND_FUNCTION(PointerExit, EventTrigger, OnPointerExitFunc)
BIND_FUNCTION(PointerDown, EventTrigger, OnPointerDownFunc)
BATCH_BIND_FUNCTION_END- 面板中的显示样式
类操作反射
可引用的注册接口
| 接口名称 | 接口描述 |
|---|---|
| PROPERTY_HIDE_PARENT_CLASS | 在属性面板中隐藏指定父类的所有属性 |
| PROPERTY_INCLUDE_PARENT | 设置父类的属性显示在子类的属性面板中 |
PROPERTY_HIDE_PARENT_CLASS(className)
- 参数
| 名称 | 描述 |
|---|---|
| className | 父类类名 |
- 描述 用于隐藏指定父类的所有属性
- 示例
PROPERTY_HIDE_PARENT_CLASS(Light)PROPERTY_INCLUDE_PARENT
- 描述 将父类注册的属性显示在子类属性面板中
- 示例
PROPERTY_INCLUDE_PARENT通知按钮反射
与双态按钮不同的是通知按钮不需要绑定变量反射,只要触发点击操作就会通过OnEdtiorUIEvent接口通知底层: virtual OnEdtiorUIEvent(string& displayName, const EUIEventType& type ) 参数:displayName表示按钮显示的文本内容,type表示当前的操作类型,目前只有EUIEventType::Click 点击一种类型
可引用的注册接口
请点击对应的接口名称跳转至详细介绍处查看接口使用方法。
| 接口名称 | 接口描述 |
|---|---|
| EDITOR_UI_BUTTON | 注册响应按钮,该按钮没有任何状态切换 |
| EDITOR_UI_BUTTON_SET_IMAGE | 用于设置响应按钮不同状态下的背景图片(和EDITOR_UI_BUTTON(displayName, flag)配合使用) |
EDITOR_UI_BUTTON(displayName,flag)、EDITOR_UI_BUTTON_SET_IMAGE(displayName, state, path)
- 参数
| 名称 | 描述 |
|---|---|
| displayName | 按钮的文本内容 |
| flag | 目前只支持默认flag PROPERTY_FLAG_DEFAULT |
| state | 按钮的状态类型: a. 默认状态EDITOR_UI_STATE_NORMAL b. 点击状态EDITOR_UI_STATE_PRESS c. 悬停状态EDITOR_UI_STATE_HOVER |
| path | 背景图标的路径 |
- 描述
| Flag名称 | Flag描述 |
|---|---|
| EDITOR_UI_BUTTON | 注册响应按钮,该按钮没有任何状态切换,也不和任何变量绑定,用于编辑器属性面板中触发了点击操作时会通知到底层 |
| EDITOR_UI_BUTTON_SET_IMAGE | 设置响应按钮在三种状态下的背景图标路径 |
- 示例
EDITOR_UI_BUTTON(NodeGridRowDisplay, PROPERTY_FLAG_DEFAULT)
EDITOR_UI_BUTTON_SET_IMAGE(NodeGridRowDisplay,EDITOR_UI_STATE
_NORMAL,":/tools/Resource/tools/centering_nor.png")可引用的flag
| Flag名称 | Flag描述 |
|---|---|
| EDITOR_UI_STATE_NORMAL | 标记当前设置的信息作用到按钮的默认状态下 |
| EDITOR_UI_STATE_PRESS | 标记当前设置的信息作用到按钮的鼠标点击状态下 |
| EDITOR_UI_STATE_HOVER | 标记当前设置的信息作用到按钮的鼠标悬停状态下 |
EDITOR_UI_STATE_NORMAL
- 描述 设置按钮和图标的默认显示形式,可以用在双态按钮、单选按钮以及响应按钮中设置按钮默认状态下的背景图标和文本显示内容、属性图标在默认状态下的背景图标。此外,在双态按钮中,可以和PROPERTY_FLAG_STATE_NEGATIVE、PROPERTY_FLAG_STATE_POSITIVE配合进行位运算,设置两种状态下不同的默认显示形式。
- 示例
EDITOR_UI_BUTTON_SET_IMAGE(NodeGridRowDisplay,EDITOR_UI_STATE
_NORMAL,":/tools/Resource/tools/centering_nor.png")EDITOR_UI_STATE_PRESS
- 描述 设置按钮和图标在鼠标点击下的显示形式,可以用在双态按钮、单选按钮以及响应按钮中设置按钮在鼠标点击状态下的背景图标和文本显示内容、属性图标在鼠标点击状态下的背景图标。此外,在双态按钮中,可以和PROPERTY_FLAG_STATE_NEGATIVE、PROPERTY_FLAG_STATE_POSITIVE配合进行位运算,设置两种状态下在鼠标点击状态下的显示形式。
- 示例
EDITOR_UI_BUTTON_SET_IMAGE(NodeGridRowDisplay,EDITOR_UI_STATE
_PRESS,":/tools/Resource/tools/centering_nor.png")EDITOR_UI_STATE_HOVER
- 描述 设置按钮和图标在鼠标悬停下的显示形式,可以用在双态按钮、单选按钮以及响应按钮中设置按钮在鼠标悬停状态下的背景图标和文本显示内容、属性图标在鼠标悬停状态下的背景图标。此外,在双态按钮中,可以和PROPERTY_FLAG_STATE_NEGATIVE、PROPERTY_FLAG_STATE_POSITIVE配合进行位运算,设置两种状态下在鼠标悬停状态下的显示形式。
- 示例
EDITOR_UI_BUTTON_SET_IMAGE(NodeGridRowDisplay,EDITOR_UI_STATE
_HOVER,":/tools/Resource/tools/centering_nor.png")布局反射
反射系统提供一套布局反射,支持用户可以通过反射自由组合属性的布局排列。
可引用的注册接口
请点击对应的接口名称跳转至详细介绍处查看接口使用方法。
| 接口名称 | 接口描述 |
|---|---|
| PROPERTY_LAYOUT系列接口: 1) PROPERTY_LAYOUT_BEGIN 2) PROPERTY_LAYOUT_SET_LAYOUT_STRETCH 3) PROPERTY_LAYOUT_ADD_STRETCH 4) PROPERTY_LAYOUT_END | 用于注册多个属性在属性面板中显示的布局类型 |
PROPERTY_LAYOUT
PROPERTY_LAYOUT_BEGIN(name, stretch, flag) PROPERTY_LAYOUT_SET_LAYOUT_STRETCH(propertyName,stretch) PRPERTY_LAYOUT_ADD_STRETCH(stretch) PROPERTY_LAYOUT_END
- 参数
| 宏定义接口 | 名称 | 描述 |
|---|---|---|
| PROPERTY_LAYOUT_BEGIN | name | 布局名称 |
| stretch | 当前布局的拉伸比例 | |
| flag | 布局类型: a. PROPERTY_FLAG_ALIGN_HORIZONTAL水平布局 b. PROPERTY_FLAG_ALIGN_VERTICAL竖直布局 | |
| PROPERTY_LAYOUT_SET_LAYOUT_STRETCH | propertyName | 属性名称,表示为当前此属性设置其在当前布局中的拉伸比例 |
| stretch | 拉伸比例 | |
| PROPERTY_LAYOUT_ADD_STRETCH | stretch | 在当前布局中添加拉伸控件并设置其所占的拉伸比例stretch |
- 描述 PROPERTY_LAYOUT系列接口主要是为了能够在属性面板中由用户自主选择创建不同的布局样式,从而将多个属性按照设置的布局呈现出水平或者竖直的排列效果。在使用过程中必须以PROPERTY_LAYOUT_BEGIN开始以PROPERTY_LAYOUT_END结束,否则面板中可能出现出现异常显示。
- 示例
//在面板中构建一组水平排列的编辑控件
//创建水平布局“Layout1”
PROPERTY_LAYOUT_BEGIN(Layout1,0,PROPERTY_FLAG_ALIGN_HORIZONTAL)
//正常注册属性
PROPERTY(Column, m_IsShowColumn, PROPERTY_FLAG_DEFAULT)
//设置属性“Column”在当前水平布局中所占的比例
PROPERTY_LAYOUT_SET_LAYOUT_STRETCH(Column,10)
//在属性“Column”右侧添加了一个拉伸控件并设置拉伸比例为2
PROPERTY_LAYOUT_ADD_STRETCH(2)
//在右侧接着注册属性
PROPERTY(Row, m_IsShowRow, PROPERTY_FLAG_DEFAULT)
//设置属性“Row”在当前水平布局中所占的拉伸比例为1
PROPERTY_LAYOUT_SET_LAYOUT_STRETCH(Row,1)
//设置水平布局“Layout1”结束的标志
PROPERTY_LAYOUT_END可引用的flag
| Flag名称 | Flag描述 |
|---|---|
| PROPERTY_FLAG_ALIGN_HORIZONTAL | 设置属性在面板中为水平布局显示 |
| PROPERTY_FLAG_ALIGN_VERTICAL | 设置属性在面板中为竖直布局显示 |
PROPERTY_FLAG_ALIGN_HORIZONTAL
- 描述 用于设置单个属性或者多个属性之间布局的排列方式为水平
- 示例
PROPERTY(NodeLabelText,m_Text,PROPERTY_FLAG_MULTIPLE_INPUT|PROPERTY
_FLAG_ALIGN_HORIZONTAL)(设置属性名称和属性编辑区域水平排列)- 面板中的显示样式 属性名称和编辑框之间水平排布: 
PROPERTY_FLAG_ALIGN_VERTICAL
- 描述 用于设置单个属性或者多个属性之间布局的排列方式为竖直
- 示例
PROPERTY(NodeLabelText,m_Text,PROPERTY_FLAG_MULTIPLE_INPUT|PROPERTY_FLAG_ALIGN_VERTICAL)(设置属性名称和属性编辑区域为竖直排列)- 面板中的显示样式
属性组反射
反射组提供了一套属性组的反射,允许用户在属性面板中创建不同的属性组,使一组属性可以在面板中实现展开和折叠的操作效果,或者一组属性可以单独显示在某个弹窗中,或者不同组的属性显示在不同的标签页面中实现随意切换页面的效果。
可引用的注册接口
| 接口名称 | 接口描述 |
|---|---|
| PROPERTY_GROUP系列接口: 1) PROPERTY_GROUP_BEGIN 2) PROPERTY_GROUP_LAYOUT_BEGIN 3) PROPERTY_GROUP_END | 批量注册多个属性为一个属性组,属性组在面板中的展示形式有以下几种:展开折叠类型、弹窗类型以及Tab窗口类型 |
PROPERTY_GROUP
PROPERTY_GROUP_BEGIN(name,type) PROPERTY_GROUP_LAYOUT_BEGIN(name, type, layoutFlag, stretch) PROPERTY_GROUP_END
- 参数
| 宏定义接口 | 名称 | 描述 |
|---|---|---|
| PROPERTY_GROUP_BEGIN | name | 属性组名称 |
| type | 属性组在面板中显示的类型: 伸缩容器 PROPERTY_GROUP_DEFAULT 弹窗容器 PROPERTY_GROUP_DIALOG 标签容器 PROPERTY_GROUP_TAB | |
| PROPERTY_GROUP_LAYOUT_BEGIN | name | 属性组的名称 |
| type | 属性组在面板中显示的类型 | |
| layoutFlag | 属性组中属性之间的布局类型: a. PROPERTY_FLAG_ALIGN_HORIZONTAL水平布局 PROPERTY_FLAG_ALIGN_VERTICAL竖直布局 | |
| stretch | 设置整个属性组所占的拉伸比例 |
- 描述 PROPERTY_GROUP系列接口主要是为了能够在属性面板中允许用户创建不同的属性组,使一组属性可以在面板中实现展开和折叠的操作效果,或者一组属性可以单独显示在某个弹窗中,或者不同组的属性显示在不同的标签页面中实现随意切换页面的效果。在使用属性组时,必须以PROPERTY_GROUP_BEGIN或者PROPERTY_GROUP_LAYOUT_BEGIN开始,PROPERTY_GROUP_END结束,否则界面中会出现异常显示。
- 示例
//创建属性组“Group1”且类型为伸缩形式
PROPERTY_GROUP_BEGIN(Group1,PROPERTY_GROUP_DEFAULT)
//正常注册一条属性
PROPERTY(Rotation,m_Rotation,PROPERTY_FLAG_DEFAULT)
//注册属性
PROPERTY(Position,m_Position,PROPERTY_FLAG_DEFAULT)
//属性组注册结束的标志
PROPERTY_GROUP_END- 面板中的显示样式


