组件的常用属性在编辑器平台和组件代码内部都可以查看和使用,位置:继承ScriptManager的Main类中,常用属性及说明见下表:
属性 | 类型 | 属性说明 |
BObjectId | String | 组件Id |
AnimStatus | Int | 姿态状态 |
SkinStatus | Int | 皮肤状态 |
CurStatus | Int | 运行模式逻辑状态 |
Properties | DynamicProperty[] | 动态属性 |
StatusEnums | EnumDescription[] | 逻辑状态枚举 |
AnimStatusEnums | EnumDescription[] | 动画状态枚举 |
EventEnums | EnumDescription[] | 运行模式事件枚举 |
EditorEventEnums | EnumDescription[] | 编辑模式事件枚举 |
组件可以自定义多种动态属性,可以在编辑器模式下设置属性值,在组件内部调用。
动态属性 | 值类型 | 属性说明 |
InputInt | Int | 整数类型输入 |
InputFloat | Float | 浮点数类型输入 |
InputString | String | 字符串类型输入 |
Label | 无 | 显示文字 |
DropDown | Int | 下拉菜单 |
Slider | Float | 浮点数类型滑动条 |
IntSlider | Int | 整数类型滑动条 |
Toggle | Bool | 选择框 |
ToggleGroup | 无 | 选择框容器 |
Panel | 无 | 动态属性容器,用于分组属性 |
Foldout | 无 | 可折叠面板动态属性容器,用于分组属性 |
通常在Main类的Awake函数或者编辑模式(EditorModeInitialized)初始化动态属性
public void Awake() { List<EnumDescription> list = new List<EnumDescription>(); list.Add(new EnumDescription(1, "Item1")); list.Add(new EnumDescription(2, "Item2")); list.Add(new EnumDescription(3, "Item3")); Properties = new DynamicProperty[9] { new InputIntProperty("血量",100), new IntSliderProperty("强度",5,2,10), new InputFloatProperty("InputFloat",10.2f), new InputStringProperty("InputString","Test"), new LabelProperty("Label"), new ToggleProperty("Toggle",true), new ToggleProperty("Toggle2",false), new SliderProperty("SliderFloat",45.3f,12.5f,78.3f), new DropDownProperty("DropDown",list,1)}; }
为组件初始化动态属性后,就可以在编辑器组件的属性面板里来查看或者修改属性值,如下图:
在编辑器里修改动态属性会实时同步到组件代码里,如果需要其他处理,比如验证属性值是否合规并通知用户,则需要重写PropertiesChanged方法:
public override void PropertiesChanged(DynamicProperty[] pros) { base.PropertiesChanged(pros); //Todo规范验证 }