首页 > 解决方案 > 确定从 UnityEngine.Component 内省的属性是否在编辑器的 Inspector 窗格中可见?

问题描述

我正在编写一个程序(实际上是一个完整的实用程序套件)来将 Unity 场景的整个对象层次结构转储为 XML(用于生成项目文档,而不是持久性或传递对象)。一个问题让我完全难住了。

给定一个 UnityEngine.Component 对象componentObject,我可以通过自省获得它的字段和属性:

FieldInfo[] fi = componentObject.GetType().GetFields();
PropertyInfo[] pi = componentObject.GetType().GetProperties();

问题是,GetProperties() 返回的许多属性实际上并不是可以在 Inspector 窗格中修改的属性(例如,有些可能仅在选择下拉列表中的某个选项时才显示......目前,它未被选中,因此这些选项将不可见)。

我希望能够确定给定属性是否可以通过编辑器中的 Inspector 窗格进行编辑,并跳过任何不会在 Inspector 窗格中显示的属性。

所以......给定:

...如果在层次结构列表中选择了组件的父游戏对象,我如何确定给定属性在检查器窗格中是否实际可见和可编辑?

标签: c#unity3d

解决方案


推荐阅读