微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决首次使用 Mono.Cecil 编织成功后,Unity 脚本不会更新

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

以下代码在我每次重新编译时都能正确运行,但如果我尝试用自定义委托类型替换 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 的脚本不再引用其目标程序集。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。