Unity真机报错Could not produce class with ID xx

在真机运行的时候出现如下报错:

Could not produce class with ID 64.
This could be caused by a class being stripped from the build even though it is needed. Try disabling 'Strip Engine Code' in Player Settings

这是因为Unity裁剪引擎代码的时候,把ID为64的类代码给裁剪掉了,导致运行的时候,无法找到。关于裁剪代码的设置在Build Settings->Player Settings->Player->Managed Stripping Level

最简单的方式是,把这个选项关闭。但是这样会导致最后打出来的包体变大,所以不推荐关闭。

这里通过添加link.xml的方式来解决这个问题,先到此链接的表格中找到对应的类 

 可以看到对应的类是MeshCollider,这时候在Assets创建一个link.xml文件,填入如下内容

<linker>
       <assembly fullname="UnityEngine">
            <type fullname="UnityEngine.MeshCollider" preserve="all"/>
       </assembly>
</linker>

assembly fullname 填的是MeshCollider所在的命名域,type fullname填的是完整的类名。

具体关于代码裁剪和link.xml的内容可以查看此文档

需要注意一点,如果link.xml中填入的类只在assetbundle的文件中出现,所有编译的场景和Resouces都没有使用到的话,会出现link.xml失效的问题。这时候,可以在Resouces拉一个空的prefab,然后把缺少的这个组件拖到这个prefab上,这样就可以解决link.xml失效的问题。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五仁烧饼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值