在inspector中我们很容易就可以对字段进行显示,只需要把字段修饰为public即可,而private的只需要在字段前加一个[SerializeField]就可以在面板显示,自定义类型则需要在类上添加[System.Serializable]属性进行序列化也可以在面板上进行显示。

在EditorWindow中,EditorGuiLayout没有可以显示List的方法,可以使用foreach循环使用EditorGUILayout.ObjectField来显示,不过这样就没办法显示自定义类型了,这里还是使用对List进行序列化显示。

EditorGUILayout.PropertyField可以显示序列化字段

这个序列化字段(SerializedProperty)由SerializedObject.FindProperty获取

在OnGUI事件中使用EditorGUILayout.PropertyField(SerializedProperty property,  bool includeChildren); 来显示自定义类tObj,同时tObj类也需要标记属性为[Serializable]

{{EJS0}}

同时这个tObj中,如果第一个字段为string类型的话,那么这个字段同时也会显示在列表元素名称上,列表元素原名为Element index

{{EJS1}}

效果图

ueditor-clst.jpg