Невозможно использовать приватные поля в юнити
Я создал CustomFormatAttribute и повесил на приватные поля в юнити. Мне нужно узнать значение этих полей для дальнейшего использования. Этот код работает на полях с публичным доступом, но для приватных полей если в getfield добавить этот параметр BindingFlags.Instance | BindingFlags.NonPublic, то юнити зависает. Как решить эту проблему? возможно ли иначе узнать значение приватных полей на которых установлен CustomFormatAttribute?
List<Component> components = new List<Component>();
GameObject[] gameObjects = FindObjectsOfType<GameObject>();
foreach (GameObject obj in gameObjects)
{
Component[] component = obj.GetComponents<Component>();
components.AddRange(component);
}
foreach (var item in components)
{
FieldInfo[] fields = item.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic);
foreach (var field in fields)
{
var value = field.GetValue(item);
var attribute = field.GetCustomAttribute<CustomFormatAttribute>();
Debug.Log(value);
}
}
Источник: Stack Overflow на русском