调用用特定属性修饰的函数

时间:2017-11-20 22:19:22

标签: c# unity3d attributes

我正在为Unity编写调试菜单API,我正在尝试复制ContextMenu属性的一些行为。此属性如下所示

[ContextMenu("Debug Function Name")]

这会将调试项放入组件的下拉列表中,单击它将执行属性正在装饰的方法。在我的属性的构造函数中,我想将名称和方法传递给我的调试管理器,以构建调试菜单。

我无法看到Unity如何做到这一点。据我所知,属性类无法获取有关方法的信息,因此这里唯一的选择是使用反射来查找执行程序集中附加了该属性的类吗?

1 个答案:

答案 0 :(得分:0)

  

这里唯一的选择是使用反射来查找执行程序集中附加了该属性的类吗?

是。 Unity循环遍历每个加载的程序集 - >每种类型 - >每种方法 - >如果它有[ContextMenu]属性 - >用MethodInfo +属性做事。

该属性对目标没有任何了解,但获取属性的唯一方法是从目标中获取属性,因此无论如何都可以访问它们。