Ourpalm / ILRuntime

Pure C# IL Intepreter Runtime, which is fast and reliable for scripting requirement on enviorments, where jitting isn't possible.
Other
2.99k stars 655 forks source link

CLR绑定和跨域继承适配器一起使用会导致对象被new两次 #763

Open sagasarate opened 1 year ago

sagasarate commented 1 year ago

之前一直用1.67,最近升级了2.10,发现运行后unity里莫名多了很多gameobject,研究了下,发现新版生成的CLR绑定对构造函数也进行了绑定,如果这个类是有跨域继承的,并注册了跨域继承适配器,那么new对象的时候会new两次,先调用跨域继承适配器来生成对象,然后再调用CLR绑定函数new了一次对象,而且new的是原始类,并且这个new出来的对象被丢弃了,普通情况下就被垃圾回收了,但我用的类因为会创建gameobject,并且要手动dispose,结果就unity里挂了很多gameobject