Итак, я все еще автоматизирую свои данные чтения в пользовательском интерфейсе (работающем с Unity), и ситуация такова: в GameObject у меня есть скрипт, в котором я храню переменные / свойства с их аккуратно отсортированными атрибутами.Я читаю их через отражение, например:
public void insertAllFromGameObject(GameObject target, List<Type> types)
{
var components = target.GetComponents<Component>();
foreach (var component in components)
{
if(types.Contains(component.GetType()))
{
var properties = component.GetType().GetProperties().Where(t => t.GetCustomAttributes<ListableAttribute>().Count() > 0);
foreach(var p in properties)
{
Debug.Log("VALUE: "+p.GetValue(component, null));
Это работает.Теперь, скажем, у меня есть свойство, в котором я хочу достичь пика в своем классе, вместо этого перечислить его свойства со значениями, установленными в этом конкретном свойстве, и потенциально изменить их одно за другим для этого свойства.
Я получил какчто касается перечисления, но не могу понять, что передать в качестве аргумента в GetValue.Пример:
public void insertAllFromVariable(GameObject target, List<Type> types, string propertyName)
{
var components = target.GetComponents<Component>();
foreach (var component in components)
{
if(types.Contains(component.GetType()))
{
var property = component.GetType().GetProperty(propertyName);
var propertysProperties = property.PropertyType.GetProperties().Where(t => t.GetCustomAttributes<ListableAttribute>().Count() > 0);
foreach(var p in propertysProperties)
{
Debug.Log("VALUE: "+p.GetValue(component, null));
Эта последняя строка является проблемой, потому что, конечно, я не ищу ее в «компоненте» (а скорее в свойстве внутри компонента) - но что я должен передать в немчтобы он отражал значения моей переменной?