0

我正在尝试通过编辑器窗口将 MethodInfo 保存到脚本中。当我创建应该记住方法信息的脚本时,它运行良好,但每当统一重新编译时,(运行时,脚本已更改或统一重新启动)MethodInfo 变量已重置为空。我已经尝试序列化保存它的类并使 MethodInfo 成为 SerializedField,

究竟发生了什么:我选择了一个属于 GameObject 的 Component 和一个属于该组件的 MethodInfo。然后创建一个新的 GameObject,其中包含一个包含 GameObject、Component 和 MethodInfo 变量的脚本。然后我将这些变量设置为选定的变量。直到现在它有效。当 unity 再次编译时,GameObject 和 Component 仍然保存,但 MethodInfo 已变为 null。

任何帮助将不胜感激。

4

1 回答 1

1

我不认为 Unity 将能够序列化 MethodInfo 类的对象。即使是这样:由于 Unity 是一个跨平台引擎,因此无法保证保存在编辑器中的 MethodInfo 对象与特定平台构建中存在的 MethodInfo 对象兼容。

您必须存储目标方法的名称并将其与反射一起使用以在运行时找到正确的方法。如果该方法被签名重载,您还必须决定在运行时采用哪个重载。

于 2016-03-23T14:52:54.523 回答