Использование Reflection для поиска имен переменных неинстанцированных классов - PullRequest
0 голосов
/ 16 марта 2020

Я пытался найти все переменные скрипта с помощью отражения. Если сценарий присоединен к игровому объекту или на сцене, тогда нет проблем с получением информации об этом сценарии, но когда я беру сценарий из проекта, приведенный ниже код не может получить доступ к какой-либо информации. Это может быть связано с сериализацией или вызовом конструктора во время выполнения, но я не могу понять, как это сделать.

public List<UnityEngine.Object> AllScripts;

[ContextMenu("Test")]
public void Test()
{
    var bindingFlags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static ;

    foreach (var aObj in AllScripts)
    {
        Type aType = aObj.GetType();
        var aInstance = aType.GetConstructor(Type.EmptyTypes);
        var aList = aObj.GetType().GetFields(bindingFlags);

        string[] res = Directory.GetFiles(Application.dataPath, aObj.GetType().ToString().Replace("namespace.","") + ".cs", SearchOption.AllDirectories);

        Debug.LogError( res[0]+" " + aList.Length + " " + aObj.GetType());

        foreach (var aVal in aList)
        {
            Debug.LogError( aVal.Name+ "" +aVal.IsStatic);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...