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