Итак, я создал эту функцию, чтобы получить все методы с пользовательским атрибутом ExecuteFromConsole
[ExecuteFromConsole("test", "help")]
static void Test(string[] args)
{
Debug.Log("Test Ran");
}
public void AddAttributeCommands()
{
//get all methods with the execute attribute
var methods = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(x => x.GetTypes())
.Where(x => x.IsClass)
.SelectMany(x => x.GetMethods())
.Where(x => x.GetCustomAttributes(typeof(ExecuteFromConsoleAttribute), false).FirstOrDefault() != null);
//adds them to commands
foreach (var method in methods)
{
Debug.Log("Found attribute");
ExecuteFromConsoleAttribute attribute = (ExecuteFromConsoleAttribute)method.GetCustomAttributes(typeof(ExecuteFromConsoleAttribute), false).First();
if(!method.IsStatic)
{
Debug.LogError("ExecuteFromConsoleAttribute must be used on static functions only");
continue;
}
CommandFunc func = (CommandFunc)Delegate.CreateDelegate(typeof(CommandFunc), method);
AddCommand(attribute.command, func, attribute.help);
}
}
, который отлично работал, когда я сначала тестировал его, но теперь он никогда не войдет в foreach l oop и Debug.log("found attribute")
означает, что он не находит метод, который прямо над ним с атрибутом. AFAIK Я не изменил ничего, что должно было повлиять на это.
Кто-нибудь знает, почему он не работает, или я все делаю неправильно, и есть лучший способ, которым я должен был бы заниматься вместо этого?
Проект находится в единство, если это влияет на что-либо