Я пытался найти все переменные скрипта с помощью отражения. Если сценарий присоединен к игровому объекту или на сцене, тогда нет проблем с получением информации об этом сценарии, но когда я беру сценарий из проекта, приведенный ниже код не может получить доступ к какой-либо информации. Это может быть связано с сериализацией или вызовом конструктора во время выполнения, но я не могу понять, как это сделать.
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);
}
}
}