Unity 脚本在使用 Mono.Cecil 首次成功编织后不会更新



我使用Mono.Cecil在Unity中编译后修改程序集(我使用Mono.Cecil的这个实现(。出于某种原因,如果我在程序集中的类型中添加了一个字段,并且该字段的类型是我定义的委托类型,那么程序集中的脚本在第一次成功修改/编织后似乎不会更新。

每次重新编译时,以下代码都会正确运行,但如果我尝试用自定义委托类型替换PropertyChangedEventHandler,则程序集只会正确编译和编织一次,然后拒绝使用较新的脚本更改进行编译/更新。只有重新启动Unity,它才会再次起作用。我没有收到任何错误消息:

var handlerReference = typeDefinition.Module.ImportReference(typeof(System.ComponentModel.PropertyChangedEventHandler));

var fieldDef = new FieldDefinition(nameof(INotifyMethodCalled.MethodCalled), FieldAttributes.Private | FieldAttributes.NotSerialized, handlerReference);
typeDefinition.Fields.Add(fieldDef);

如有任何帮助,我们将不胜感激。

我刚刚解决了我的问题——进行编织的脚本引用了它正在编织的程序集。这在程序上相当于一条蛇吃掉尾巴并被它窒息。使用Mono.Cecil的脚本不再引用其目标程序集。

最新更新