Я пишу программу (на самом деле, целый набор утилит) для выгрузки всей иерархии объектов сцены Unity в XML (для создания проектной документации, а не для сохранения или передачи объектов).Одна проблема поставила меня в тупик.
Учитывая объект UnityEngine.Component componentObject
, я могу получить его поля и свойства с помощью самоанализа:
FieldInfo[] fi = componentObject.GetType().GetFields();
PropertyInfo[] pi = componentObject.GetType().GetProperties();
Суть в том, что многие свойствакоторые возвращаются GetProperties (), на самом деле не являются свойствами, которые можно изменить на панели инспектора (например, некоторые из них могут отображаться только при выборе определенного параметра в раскрывающемся списке ... и в настоящее время он не выбрано, поэтому эти параметры не будут видны).
Я бы хотел иметь возможность определить, является ли данное свойство тем, которое можно редактировать с помощью панели «Инспектор» в редакторе, и пропуститьлюбое свойство, которое НЕ БУДЕТ отображаться на панели Инспектора.
Итак ... учитывая:
- массив объектов PropertyInfo,
- , полученных из UnityEngine.Компонент с помощью самоанализа,
- , связанный с включенным GameObject в иерархии сцены,
... как определить, будет ли заданное свойство активироватьсяy быть видимым и редактируемым на панели инспектора, если родительский объект GameObject компонента был выбран в списке иерархии?