手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

Unity 编辑器中如何显示脚本组件的属性

时间:2024-10-12 08:45:52

本经验介绍在Unity 编辑器中,如何显示脚本组件的属性。本经验所提的显示脚本组件的属性需要创建新的Editor对象,这也意味着这种方式只能对一个脚本及其子类起作用。

Unity 编辑器中如何显示脚本组件的属性

工具/原料

Unity 2018.3

读写属性的处理

1、首先,关于Unity在Inspector中显示属性的文档可以在Unity的Wiki找到。

Unity 编辑器中如何显示脚本组件的属性

2、具体做法,首先创建一个脚本用于编写自定义Attribute,并添加如图所示Attribute。

Unity 编辑器中如何显示脚本组件的属性

3、接着,在Editor文件夹(任意位置的文件夹都可)中创建两个脚本文件。ExposeProperties.cs 提供一些可重用的函数,XXXXEditor.cs 则用于覆盖默认Editor的显示。

Unity 编辑器中如何显示脚本组件的属性

4、在ExposeProperties.cs中,按照Wiki文档创建代码即可。

Unity 编辑器中如何显示脚本组件的属性

5、在XXXEditor.cs文件中,则需要按照需要显示Property的组件类来设置。我的类是MQTTD髫潋啜缅evice,设置如图。同时在CustomEditorAttribute上添加editorForChildClasses参数,目的是让子类组件也按照这种方式显示。

Unity 编辑器中如何显示脚本组件的属性

6、然后就可以使用实现好的属性和配套Editor类。在脚本中(我的是MQTTDevice)中对一些public且可读可写的property添加[ExposeProperty]。

Unity 编辑器中如何显示脚本组件的属性

7、在Unity编辑器中,立刻可以看到效果,属性被显示了出来。

Unity 编辑器中如何显示脚本组件的属性

8、但是,如果我们设置这些属性值,再运行,会发现属性值消失。这是因为属性的序列化和运行时读写不是一回事,属性不是字段,Unity中默认未序列化/未保存。

Unity 编辑器中如何显示脚本组件的属性

只读属性的处理

1、只读属性如图所示,只有getter,或者setter为私有。

Unity 编辑器中如何显示脚本组件的属性

2、对于这种情况,我们需要修改ExposeProperties代码,第一处修改是修改其生成EditorGUILayout的过程,仅生成一个LabelField简单的显示属性的字符串形式即可。

Unity 编辑器中如何显示脚本组件的属性

3、第二处修改是GetProperties函数,所有可读的属性都处理即可。

Unity 编辑器中如何显示脚本组件的属性

4、回到unity editor,可以看到可读的公共属性以标签的形式显示了出来。

Unity 编辑器中如何显示脚本组件的属性
© 手抄报圈