使用反射查找未实例化类的变量名

时间:2020-03-16 10:25:55

标签: c# unity3d reflection

我一直试图通过反射找到脚本的所有变量。如果脚本附加到游戏对象或场景中,则获取有关该脚本的信息没有问题,但是当我从项目中获取脚本时,以下代码无法访问任何信息。可能与序列化有关,或者必须在运行时调用构造函数,但是我不知道该怎么做。

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);
        }
    }
}

0 个答案:

没有答案