Unity切换至IL2CPP后打包报错无法找到默认构造器的问题

文章讲述了在Unity项目中遇到IL2CPP优化导致的InvalidOperationException,原因是ABConfig类没有默认构造器。解决办法是通过LinkerXML配置,明确指定需要保留的类、方法等,或者关闭代码裁剪功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错原文:

InvalidOperationException:MyCore.ABPckages.ABConfig cannot be serialized because it does not have a defaut putlic constructor(方法无法被序列化因为没有默认的公共构造器)

其中MyCore是我这边封装的一个dll工具类。在项目没有切换至IL2CPP之前一切都是正常的,这个问题我是摸索了一个上午和一个下午终于搞定。

报错原因:

原文:Unity的IL2CPP报错没有构造器

我起初不知道原因,直到看到了这位大佬的文章,才搞清楚原来如此。

简单来说,就是IL2CPP的一切优化机制,将系统没检测到使用的类在打包的时候都去除掉了,但是如果某些类通过反射来调用,编译器是无法检测到的,并且在编译阶段又将这个类去除了,因此导致了打包后报错。(更详细的解释在上面的链接文章)

解决方法:

1、在项目初始化的脚本,把这些类都new出来,如果是继承Mono的可能需要addComponent。(不推荐,因为这样相当于多出来了几个空对象,而且很麻烦)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值