Skip to content

反射系统

反射是程序可以访问、检测和修改它本身状态或行为的一种能力。反射的一个简单示例就是程序在运行的过程中,可以通过类名称创建对象,并获取类中声明的成员变量和方法。

反射系统为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变量
flagsFlag
  • 描述 用于非map类型的属性变量注册。

  • 示例 PROPERTY(TestDemo,m_Test,PROPERTY_FLAG_STYLE_SLIDER)

PROPERTY_RANGE(propName,varName,minValue,maxValue)
  • 参数
名称描述
propName属性名称
varName变量
minValue变量的最小值
maxValue变量的最大值
  • 描述 用于非map类型非字符串类型的属性变量注册,在注册时可设置变量的范围。此接口内部直接使用了默认的flag,即PROPERTY_FLAG_DEFAULT

  • 示例

cpp
  //在脚本.h文件中声明变量
  int m_Restitution
  //在cpp文件中注册属性
  PROPERTY_RANGE(Restitution, m_Restitution, 0, 1)
PROPERTY_FLAG_RANGE(propName,varName,flags,minValue, maxValue)
  • 参数
名称描述
propName属性名称
varName变量
flagsFlag
minValue变量的最小值
maxValue变量的最大值
  • 描述 用于非map类型非字符串类型的属性变量注册,在注册时用户可设置变量的范围和反射Flag

  • 示例

cpp
  //“m_ShadowStrength”是属性变量,“0,1”是设置的属性范围
  PROPERTY_FLAG_RANGE(ShadowStrength,m_ShadowStrength,PROPERTY_FLAG_SLIDER, 0, 1)
PROPERTY_HIDE(propName)
  • 参数
名称描述
propName属性名称
  • 描述 用于隐藏面板中指定的属性

  • 示例

cpp
  //“TestDemo”是属性名称,替换成实际的名称即可
  PROPERTY_HIDE(TestDemo)
PROPERTY_INVISIBLE_NAME(propName)
  • 参数
名称描述
propName属性名称
  • 描述 用于隐藏面板中属性的名称,但是属性名称存在占位

  • 示例

cpp
  //“TestDemo”属性名称,替换成实际的名称即可
  PROPERTY_INVISIBLE_NAME(TestDemo)
PROPERTY_GONE_NAME(propName)
  • 参数
名称描述
propName属性名称
  • 描述 用于隐藏面板中属性的名称,属性名称没有占位

  • 示例

cpp
  //“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图标路径
  • 描述 用来设置不同状态下图标的路径,目前仅用于以下两种情况:

    1. 用来设置属性左侧图标路径;
    2. 用来设置双态按钮在不同状态下的图标路径
  • 示例

cpp
  //设置NodeShadowDisplay属性生成的双态按钮在面板中显示的属性图标
  PROPERTY_SET_ICON(NodeShadowDisplay,PROPERTY_FLAG_STATE_NEGATIVE|EDITOR_UI_STATE_NORMAL,"RightAlign_Hover.png")
PROPERTY_SET_UNIT(propName,unit,flag)
  • 参数
名称描述
propName属性名称
unit单位名称,字符串类型
flagFlag有以下几种类型可供选择设置:
a. 若当前编辑控件是map变量中key值注册生成的,则需要传入PROPERTY_FLAG_RMAP_KEY
b. 若当前编辑控件是map变量中value值注册生成的,则需要传入PROPERTY_FLAG_RMAP_VALUE
c. 若当前编辑控件是非map变量注册生成的,则需要传入默认flag,即PROPERTY_FLAG_DEFAULT
  • 描述 用来给属性变量值设置单位名称显示在面板中

  • 示例

cpp
  //其中”px”是单位名称
  PROPERTY_SET_UNIT(NodeSize,"px",PROPERTY_FLAG_DEFAULT)
  • 面板中的显示样式 alt text
PROPERTY_SET_RANGE(propertyName,valueType,minValue,maxValue)
  • 参数
名称描述
propertyName属性名称
valueType变量类型
minValue变量最小值
maxValue变量最大值
  • 描述 用来给非map变量设置数值的范围

  • 示例

cpp
  //如以下设置int类型的变量的范围为0-360
  PROPERTY_SET_RANGE(NodeRotation, int, 0, 360)
PROPERTY_SET_SLIDER_STEPLENGTH(propertyName,valueType,stepLength)
  • 参数
名称描述
propertyName属性名称
valueType变量类型
stepLength设置滑动条的步长
  • 描述 用来给非map变量注册生成的滑动条设置步长

  • 示例

cpp
  //如以下所示,“TestDemo”是属性名称,数据类型为int,步长为10
  PROPERTY_SET_SLIDER_STEPLENGTH(TestDemo,int,10)
PROPERTY_SET_ENABLE(propertyName,enable,flag)
  • 参数
名称描述
propertyName属性名称
enablebool类型,设置属性在面板中是否可编辑
flagFlag有以下几种类型可供选择设置:
a. 若当前编辑控件是map变量中key值注册生成的,则需要传入PROPERTY_FLAG_RMAP_KEY
b. 若当前编辑控件是map变量中value值注册生成的,则需要传入PROPERTY_FLAG_RMAP_VALUE

若当前编辑控件是非map变量注册生成的,则需要传入默认flag ,即PROPERTY_FLAG_DEFAULT
  • 描述 用来设置属性在面板中是否可进行编辑

  • 示例

cpp
  //设置属性“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来设置默认的显示状态:

    1. 整型:int、uint32
    2. 浮点型:float、double
    3. 字符串:string
    4. bool
    5. 向量:Vector2、Vector3、Vector4、Rect
    6. 颜色:Color、Color32、HDRColor
    7. 枚举
  • 示例

cpp
  //“m_Row”表示变量,在实际应用的过程中,可以替换成其所支持的数据类型
  PROPERTY(Row,m_Row,PROPERTY_FLAG_DEFAULT)
  • **面板中显示的样式
    1. 整型、浮点型、字符串 alt textalt textalt text
    2. bool alt text
    3. 向量 alt text
    4. 颜色 alt text
    5. 枚举 alt text
PROPERTY_FLAG_STYLE_COMBOBOX
  • 描述 表示当前属性在属性面板中显示为下拉框,下拉框包含单选和多选两种形式。目前此flag支持的变量类型为:候选(int/float/double/string)(其中候选创建请参考PROPERTY_CANDIDATE系列接口)。

  • 示例:

cpp
  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. 多选下拉框 alt text
    2. 单选下拉框 alt text

(1)PROPERTY_CANDIDATE系列接口

  • 参数
宏定义接口名称描述
PROPERTY_CANDIDATE_BEGINname候选的名称
flag候选类型,包括以下三种类型:
a.PROPERTY_CANDIDAE_DEFAULT 单选,直接赋值给属性
b.PROPERTY_CANDIDAE_MULTISEL_BITSET 多选,采用位与运算后赋值给属性,适用于整型变量
c.PROPERTY_CANDIDAE_MULTISEL_MANUAL多选,不直接改变属性值,由开发者根据选项自己修改
PROPERTY_CANDIDATE_ITEMitemLabel在面板中显示的子项名称,以字符串的形式传入
value子项实际对应的数值,以字符串的形式传入
PROPERTY_CANDIDATE_ITEM_BITitemLabel在面板中显示的子项名称
bitIdx子项实际对应的整形数值,保证能够进行位运算
PROPERTY_CANDIDATE_ITEM_SET_ICONitemLabel在PROPERTY_CANDIDATE_ITEM和PROPERTY_CANDIDATE_ITEM_BIT中传入的itemLabel值
statestate包含以下三种类型:
a.  默认状态 EDITOR_UI_STATE_NORMAL
b. 鼠标点击状态 EDITOR_UI_STATE_PRESS
c. 鼠标悬停状态 EDITOR_UI_STATE_HOVER
iconPath当候选以单选按钮显示的时候,此参数用来设置按钮的背景图标路径
  • 描述 PROPERTY_CANDIDATE系列接口主要是为了能够将非枚举类型的变量也通过下拉框列表以及单选按钮的形式显示在面板中,以供用户进行选择。该系列接口和枚举的ENUM接口类似,将各种选项注册在反射系统中,需要和PROPERTY、PROPERTY_SET_CANDIDATE等注册接口配合使用。

  • 示例

cpp
  //在脚本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候选名称
flagFlag有以下几种类型可供选择设置:
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系列接口)。

  • 示例

  1. 示例一:候选
cpp
  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
  1. 示例二:枚举
cpp
  //枚举类型定义
  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
  • 面板中的显示样式 alt text
PROPERTY_FLAG_DISABLE
  • 描述 用于设置属性在属性面板中不可进行编辑操作(对所有类型的反射均生效)

  • 示例:

cpp
  PROPERTY(NodeNumber,m_Number,PROPERTY_FLAG_DISABLE)
  PROPERTY(NodeLabelText,m_Text,PROPERTY_FLAG_MULTIPLE_INPUT|PROPERTY_FLAG_DISABLE)
  • 面板中的显示样式 无样式改变,只是设置在面板中无法编辑的状态。
PROPERTY_FLAG_ICON
  • 描述 标记当前设置的信息是和属性图标(面板中显示在属性名称的左侧)有关,在属性名称无效时属性图标可代替属性名称来区分不同的属性。 和变量类型无关,所有的数据类型均可使用该flag。

  • 示例:

cpp
  //先进行属性注册
  PROPERTY(NodeBorderShadowDisplay,m_Test,PROPERTY_FLAG_DEFAULT)
  //再设置属性图标
  PROPERTY_SET_ICON(NodeBorderShadowDisplay,PROPERTY_FLAG_ICON,"xxx.png")(设置属性“NodeBorderShadowDisplay”图标的路径信息)
PROPERTY_FLAG_LINEEDIT_ECHO_MODE_PASSWORD
  • 描述 和单行输入框组合使用,设置当前输入框显示模式为密码形式。

  • 示例:

cpp
  PROPERTY(SignPassword, m_SignPassword, PROPERTY_FLAG_LINEEDIT_ECHO_MODE_PASSWORD)
  • 面板中的显示样式 alt text
PROPERTY_FLAG_DISABLE_RESET
  • 描述 表示当前属性不参与属性值的重置操作。

  • 示例:

cpp
  //设置属性不参与重置功能
  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类型
flagFlag有以下几种类型可供选择设置:

a. 若当前编辑控件是map变量中key值注册生成的,则需要传入PROPERTY_FLAG_RMAP_KEY

b. 若当前编辑控件是map变量中value值注册生成的,则需要传入PROPERTY_FLAG_RMAP_VALUE

c. 若当前编辑控件是非map变量注册生成的,则需要传入默认flag ,即PROPERTY_FLAG_DEFAULT
  • 描述 用来给浮点型属性变量设置在面板中显示的小数点位数

  • 示例:

cpp
  //设置小数的位数是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类型)来控制

  • 示例:

cpp
  //注册属性
  PROPERTY(HierarchyName, m_HierarchyName, PROPERTY_FLAG_DEFAULT)
  //表示属性面板名称由变量m_HierarchyName控制
  PROPERTY_SET_TITLE_NAME(HierarchyName)
PROPERTY_SET_REGEXP(propertyName,regExp,flag)
  • 参数
名称描述
propertyName属性名称
regExp正则表达式字符串
flagFlag有以下几种类型可供选择设置:
a. 若当前编辑控件是map变量中key值注册生成的,则需要传入PROPERTY_FLAG_RMAP_KEY
b. 若当前编辑控件是map变量中value值注册生成的,则需要传入PROPERTY_FLAG_RMAP_VALUE
若当前编辑控件是非map变量注册生成的,则需要传入默认flag ,即PROPERTY_FLAG_DEFAULT
  • 描述 用来给字符串类型属性变量设置正则表达式

  • 示例:

cpp
  //设置属性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

  • 示例:

cpp
  //“m_Text”变量,替换成实际的变量即可
  PROPERTY(NodeLabelText,m_Text, PROPERTY_FLAG_STYLE_MULTIPLE_INPUT)
  • 面板中的显示样式alt text

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按钮显示的文本内容
flagFlag有以下几种类型可供选择设置:
a. 若当前双态按钮是map变量中key值注册生成的,则需要传入PROPERTY_FLAG_RMAP_KEY
b. 若当前双态按钮是map变量中value值注册生成的,则需要传入PROPERTY_FLAG_RMAP_VALUE
c. 若当前双态按钮是非map变量注册生成的,则需要传入默认flag ,即PROPERTY_FLAG_DEFAULT
  • 描述 用来设置双态按钮不同激活状态下背景图标的路径,目前支持的变量类型为:bool

  • 示例:

cpp
  //其中“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

  • 示例:

cpp
  PROPERTY(State,m_IsPlay,PROPERTY_FLAG_STYLE_BUTTON)
  • 面板中的显示样式alt text
PROPERTY_FLAG_EXTRA_APPLY_TO_CHILDREN
  • 描述 用来设置当前的属性是否一块应用到当前节点的子节点中。编辑器内部应用的实例:射线检测勾选框。目前支持的变量类型为:bool

  • 示例:

cpp
  PROPERTY(Raycast, m_bIsRaycastTarget, PROPERTY_FLAG_EXTRA_APPLY_TO_CHILDREN)
  • 面板中的显示样式alt text
PROPERTY_FLAG_STATE_NEGATIVE
  • 描述 表示双态按钮的非激活状态,此时状态值为false。可以和EDITOR_UI_STATE_NORMAL、EDITOR_UI_STATE_PRESS、EDITOR_UI_STATE_HOVER配合进行位运算,设置双态按钮在非激活状态时针对以上三种操作状态不同的显示形式。

  • 示例:

c++
  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配合进行位运算,设置双态按钮在激活状态时针对以上三种操作状态不同的显示形式。

  • 示例:

cpp
  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_BEGINenumTypeName枚举类型名称
reflectName注册在反射系统中使用的枚举名称
ENUMdisplayName枚举项在面板中显示的名称
varName枚举项在枚举类型中实际的值
ENUM_SET_ICONdisplayNameENUM中定义的displayName
state表示在单选按钮中按钮在不同状态下的背景图标,分别是以下三种状态:
a. 默认状态EDITOR_UI_STATE_NORMAL
b. 鼠标点击状态EDITOR_UI_STATE_PRESS
c. 鼠标悬停状态EDITOR_UI_STATE_HOVER
iconPath用于背景图标的路径
  • 描述 ENUM系列接口主要是为了能够将枚举类型的信息注册在反射系统中,和ENUM_PROPERTY配合使用,在面板中通过下拉框或者单选按钮的形式将每一项展示出来,以供用户选择。

  • 示例

c++
	//保证文件中有定义枚举类型
	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_END
ENUM_PROPERTY(enumName,reflectName,varName,flags)

参数

名称描述
enumName枚举类型的名称
reflectName属性名称
varName枚举变量
flagsFlag:
a. 如果显示为下拉框样式,flag为默认值PROPERTY_FLAG_DEFAULT
b. 如果显示为“单选按钮”的样式,flag则可设置为PROPERTY_FLAG_STYLE_RADIOBUTTON

描述 用于枚举类型的属性变量注册

示例

cpp
	//保证文件中有定义枚举类型
	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面板中显示的文本内容
flagFlag有以下几种类型可供选择设置:
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。

示例

cpp
	PROPERTY_SET_FIELD_NAME(RTTIPosoffset, “W;H”,PROPERTY_FLAG_DEFAULT)

面板中的显示样式alt text

PROPERTY_SET_FIELD_TIP(propName,tip,flag)

参数

名称描述
propName属性名称
tip面板中编辑控件在鼠标悬停状态下显示的文本内容
flagFlag有以下几种类型可供选择设置:
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。

示例

cpp
	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: alt textalt text

HDRColor: alt textalt text

可引用的注册接口

请点击对应的接口名称跳转至上文查看接口使用方法。

接口名称接口描述
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的子类指针对象)。 资源类型在面板中显示的样式如下:

  1. std::string alt textalt textalt text
  2. ActorRef、NActorPtr、NActorRef、EngineGUID、Object(或者是继承Object的子类指针对象) alt text

可引用的注册接口

请点击对应的接口名称跳转至上文查看接口使用方法。

接口名称接口描述
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类型的文件
flagFlag有以下几种类型可供选择设置:
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的形式)

示例

cpp
	//示例一:
	//表示当前属性只支持后缀为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的用法。

示例

cpp
	PROPERTY(MainTexture, m_Path, PROPERTY_FLAG_STYLE_RESOURCE_PIXMAP)

面板中的显示样式alt text

PROPERTY_FLAG_STYLE_RESOURCE_TEXT

描述 表示当前属性在属性面板中显示为文件的绑定框。将传入的文件(支持的文件类型:rt、nmat)路径值显示在面板中,并支持拖拽文件(目前支持的文件格式:rt、nmat)到属性面板切换绑定的文件。目前此Flag支持的变量类型为:std::string。 如果需要添加仅支持特定文件的限制,请参考PROPERTY_SET_FILTER和PROPERTY_FLAG_FILTE_SUFFIX的用法。

示例

cpp
	PROPERTY(Animation File, m_FileName, PROPERTY_FLAG_STYLE_RESOURCE)

面板中的显示样式alt text

PROPERTY_FLAG_STYLE_FILE

描述 用于弹出资源管理器弹窗,获取文件的路径并显示在面板中。目前此flag支持的变量类型为:std::string。 如果需要添加仅支持特定文件的限制,请参考PROPERTY_SET_FILTER和PROPERTY_FLAG_FILTE_SUFFIX的用法

  • 示例
cpp
	PROPERTY(SelectFile,m_Path,PROPERTY_FLAG_STYLE_FILE)

面板中的显示样式alt text

PROPERTY_FLAG_STYLE_FOLDER

描述 用于弹出资源管理器弹窗,在弹窗中选择对应的文件夹路径。目前此flag支持的变量类型为:std::string。 如果需要添加仅支持特定文件的限制,请参考PROPERTY_SET_FILTER和PROPERTY_FLAG_FILTE_SUFFIX的用法。

  • 示例
cpp
	PROPERTY(SelectFile,m_Path,PROPERTY_FLAG_STYLE_FOLDER)
  • 面板中的显示样式alt text
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的子类指针对象)。

示例

cpp
	PROPERTY(RenderCamera,m_RenderCamera, PROPERTY_FLAG_STYLE_OBJECT)

面板中的显示样式 如下图所示,在点击右侧的锥体按钮后,会显示“选择资源”的弹窗 alt textalt text

针对资源弹窗中显示的内容可以添加一些限制,比如只显示含有Label组件的actor等,在注册属性的时候除了PROPERTY_FLAG_STYLE_OBJECT之外需要增加额外的flag限制。

(1)PROPERTY_FLAG_FILTER_LABEL - 描述 用于Actor对象的反射,和PROPERTY_FLAG_STYLE_OBJECT一起使用,过滤掉除包含Label组件以外的其它Actor。目前支持的变量类型为:ActorRef、NActorPtr、NActorRef。

示例

cpp
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。

示例

cpp
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。

示例

cpp
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。

示例

cpp
	PROPERTY(TestActor,m_Actor,PROPERTY_FLAG_STYLE_OBJECT|PROPERTY_FLAG_FILTER_UI)

(5)PROPERTY_FLAG_FILTER_POSTPROCESS

  • 描述 用于Object对象的反射,和PROPERTY_FLAG_STYLE_OBJECT一起使用,过滤掉非后处理组件的脚本。目前支持的变量类型为:Object*、EngineGUID
  • 示例
cpp
	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

示例

cpp
	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属性名称
elementNameFormatstd::vector数组中子元素对应的名称格式:
a. “Test”,纯字符串形式,每个元素的名称保持一致
b. “Test%d”,在字符串任意位置插入编号(允许同时插入多个编号),编号默认从0开始,随元素个数累加

描述 用来给std::vector变量中子元素设置名称格式

示例

cpp
	//注册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

示例

cpp
	//示例一:
	//注册一个基础输入框的形式且元素数量无法更改
	PROPERTY(Ints,m_Ints,PROPERTY_FLAG_CONTAINER_CAPACITY_HIDE)
	//示例二:
	//注册一个带滑动条的形式且元素数量无法更改
	PROPERTY(Ints,m_Ints,PROPERTY_FLAG_CONTAINER_CAPACITY_HIDE|PROPERTY
	_FLAG_STYLE_SLIDER)

面板中的显示样式alt text

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变量
keyFlagskey值对应的反射flag
valueFlagsvalue值对应的反射flag
mapFlagsmap容器对应的反射flag,目前仅PROPERTY_FLAG_CONTAINER_CAPACITY_HIDE、PROPERTY_FLAG_DISABLE和PROPERTY_FLAG_DEFAULT可设置

描述 用于map类型的属性变量注册。

示例

cpp
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属性名称
keyTypeKey对应的变量类型
valueTypevalue对应的变量类型
minValue变量最小值
maxValue变量最大值

描述 用来给map变量的key值设置数值的范围

示例

cpp
	PROEPRTY_SET_MAP_KEY_RANG(NodeRotation, int, int,0, 360)
PROPERTY_SET_MAP_VALUE_RANGE(propertyName,keyType,valueType,minValue,maxValue)

参数

名称描述
propertyName属性名称
keyTypeKey对应的变量类型
valueTypevalue对应的变量类型
minValue变量最小值
maxValue变量最大值

描述 用来给map变量的value值设置数值的范围

示例

cpp
	PROEPRTY_SET_MAP_VALUE_RANG(NodeRotation, int, int,0, 360)
PROPERTY_SET_MAP_KEY_SLIDER_STEPLENGTH(propertyName,keyType,valueType,stepLength)

参数

名称描述
propertyName属性名称
keyTypemap变量中key值对应的数据类型
valueTypemap变量中value值对应的数据类型
stepLength为map变量中key值注册生成的滚动条设置步长

描述 用来给map变量中key值注册生成的滑动条设置步长

示例

cpp
	PROPERTY_SET_MAP_KEY_SLIDER_STEPLENGTH(TestDemo,int,int,10)
PROPERTY_SET_MAP_VALUE_SLIDER_STEPLENGTH(propertyName,keyType,valueType,stepLength)

参数

名称描述
propertyName属性名称
keyTypemap变量中key值对应的数据类型
valueTypemap变量中value值对应的数据类型
stepLength为map变量中value值注册生成的滚动条设置步长

描述 用来给map变量中value值注册生成的滑动条设置步长

示例

cpp
	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值对应的配置信息。

示例

cpp
	//设置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

示例

cpp
PROPERTY_MAP(Ints,m_Ints,PROPERTY_FLAG_CONTAINER_
KEY_AS_LABEL,PROPERTY_FLAG_DEFAULT, PROPERTY_FLAG_DEFAULT)

面板中的显示样式alt text

PROPERTY_FLAG_RMAP_VALUE

描述 标记当前设置的是map变量的value值对应的配置信息。

  • 示例
cpp
	//设置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函数实际的名称

描述 注册函数

示例

cpp
	FUNCTION(PostEditChangeProperty, Object, PostEditChangeProperty)
BIND_FUNCTION(reflectName, className, funcName)

参数

名称描述
reflectName面板中显示的名称
className函数所属类的类名
funcName函数实际的名称

描述 用于注册函数绑定框,用户可在面板中通过此绑定框进行回调函数(来源FUNCTION注册的函数)的绑定

  • 示例
cpp
	//“Object”表示当前所在组件的名称,可替换成实际的组件名称
	BIND_FUNCTION(OnValueChanged, Object, OnValueChanged)

面板中的显示样式alt text

alt text

BATCH_BIND系列接口

BATCH_BIND_FUNCTION_BEGIN(displayName) BATCH_BIND_FUNCTION_END

参数

名称描述
displayName面板中显示的名称

描述 用于批量注册多组函数绑定框的开始和结束标志,在BATCH_BIND_FUNCTION_BEGINBATCH_BIND_FUNCTION_END之间可以插入多个BIND_FUNCTION的注册。

示例

cpp
	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

面板中的显示样式alt text

类操作反射

可引用的注册接口

接口名称接口描述
PROPERTY_HIDE_PARENT_CLASS在属性面板中隐藏指定父类的所有属性
PROPERTY_INCLUDE_PARENT设置父类的属性显示在子类的属性面板中
PROPERTY_HIDE_PARENT_CLASS(className)

参数

名称描述
className父类类名
  • 描述 用于隐藏指定父类的所有属性

示例

cpp
	PROPERTY_HIDE_PARENT_CLASS(Light)
PROPERTY_INCLUDE_PARENT

描述 将父类注册的属性显示在子类属性面板中

示例

cpp
	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设置响应按钮在三种状态下的背景图标路径

示例

cpp
	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配合进行位运算,设置两种状态下不同的默认显示形式。

示例

cpp
	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配合进行位运算,设置两种状态下在鼠标点击状态下的显示形式。

示例

cpp
	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配合进行位运算,设置两种状态下在鼠标悬停状态下的显示形式。

示例

cpp
	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_BEGINname布局名称
stretch当前布局的拉伸比例
flag布局类型:
a. PROPERTY_FLAG_ALIGN_HORIZONTAL水平布局
b. PROPERTY_FLAG_ALIGN_VERTICAL竖直布局
PROPERTY_LAYOUT_SET_LAYOUT_STRETCHpropertyName属性名称,表示为当前此属性设置其在当前布局中的拉伸比例
stretch拉伸比例
PROPERTY_LAYOUT_ADD_STRETCHstretch在当前布局中添加拉伸控件并设置其所占的拉伸比例stretch

描述 PROPERTY_LAYOUT系列接口主要是为了能够在属性面板中由用户自主选择创建不同的布局样式,从而将多个属性按照设置的布局呈现出水平或者竖直的排列效果。在使用过程中必须以PROPERTY_LAYOUT_BEGIN开始以PROPERTY_LAYOUT_END结束,否则面板中可能出现出现异常显示。

示例

cpp
	//在面板中构建一组水平排列的编辑控件
	//创建水平布局“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

描述 用于设置单个属性或者多个属性之间布局的排列方式为水平

示例

cpp
	PROPERTY(NodeLabelText,m_Text,PROPERTY_FLAG_MULTIPLE_INPUT|PROPERTY
	_FLAG_ALIGN_HORIZONTAL)(设置属性名称和属性编辑区域水平排列)

面板中的显示样式 属性名称和编辑框之间水平排布: alt textalt text

PROPERTY_FLAG_ALIGN_VERTICAL

描述 用于设置单个属性或者多个属性之间布局的排列方式为竖直

示例

cpp
PROPERTY(NodeLabelText,m_Text,PROPERTY_FLAG_MULTIPLE_INPUT|PROPERTY_FLAG_ALIGN_VERTICAL)(设置属性名称和属性编辑区域为竖直排列)

面板中的显示样式alt textalt text

属性组反射

反射组提供了一套属性组的反射,允许用户在属性面板中创建不同的属性组,使一组属性可以在面板中实现展开和折叠的操作效果,或者一组属性可以单独显示在某个弹窗中,或者不同组的属性显示在不同的标签页面中实现随意切换页面的效果。

可引用的注册接口

接口名称接口描述
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_BEGINname属性组名称
type属性组在面板中显示的类型:
伸缩容器
PROPERTY_GROUP_DEFAULT
弹窗容器
PROPERTY_GROUP_DIALOG
标签容器
PROPERTY_GROUP_TAB
PROPERTY_GROUP_LAYOUT_BEGINname属性组的名称
type属性组在面板中显示的类型
layoutFlag属性组中属性之间的布局类型:
a. PROPERTY_FLAG_ALIGN_HORIZONTAL水平布局
PROPERTY_FLAG_ALIGN_VERTICAL竖直布局
stretch设置整个属性组所占的拉伸比例

描述 PROPERTY_GROUP系列接口主要是为了能够在属性面板中允许用户创建不同的属性组,使一组属性可以在面板中实现展开和折叠的操作效果,或者一组属性可以单独显示在某个弹窗中,或者不同组的属性显示在不同的标签页面中实现随意切换页面的效果。在使用属性组时,必须以PROPERTY_GROUP_BEGIN或者PROPERTY_GROUP_LAYOUT_BEGIN开始,PROPERTY_GROUP_END结束,否则界面中会出现异常显示。

示例

cpp
	//创建属性组“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

面板中的显示样式alt textalt text