找回密码
 立即注册
查看: 296|回复: 0

Unity游戏开发杂记:Unity_IL2CPP常见问题分析

[复制链接]
发表于 2023-3-21 09:56 | 显示全部楼层 |阅读模式
前言

Unity 编辑器模式下是采用.net 虚拟机解释执行.net 代码,发布的时候有两种模式,一种是mono虚拟机模式,一种是il2cpp模式。由于iOS AppStore规定不允许使用虚拟机,所以发布到iOS,Unity采用了il2cpp技术,把IL(.net字节码) 的代码转成c++代码,然后再用xcode来进行编译。发布到Android的时候,可以用mono与il2cpp模式,il2cpp由于转成native code直接在硬件CPU上跑,性能要比虚拟机解释执行要高,所以发布Android的时候我们也采用il2cpp。但是开发者会遇到一些问题mono模式下能正常运行,编译il2cpp模式下会出现问题,如闪退等,本文将il2cpp 打包发布可能遇到的问题,进行分类,分析与总结,希望能给大家提供解决思路与方向。
对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!
il2cpp模式编译错误


Mono模式下没问题, il2cpp模式下报类型缺失错误


Mono模式没有问题,IL2CPP模式下闪退
最后一类问题就是mono模式下没有问题,il2cpp模式下闪退。闪退其实就是手机app的这个进程由于运行时候的错误,OS必须要杀掉这个进程,而虚拟机解释执行式模式,不容易闪退,因为有虚拟机这一层作为保护隔绝,而对于il2cpp而言,全部已经转成了native 代码,如果运行的时候数据不对,比如除0异常,空指针等会导致OS 直接把进程删掉造成闪退。所以这样就会导致mono模式下不闪退,而il2cpp模式下却直接闪退。


一般解决这类我们问题我们还是要通过隔离的手段,找出运行出错的代码与相关数据,然后分析原因来修正它。而不要老想着 “mono正常,而il2cpp模式下报错,闪退”是不是il2cpp的环境问题。其实很大一部分确实是我们的代码或我们代码跑的数据异常导致的。
今天的分享就到这里了,关注我们,可以学习更多的Unity 游戏开发程序员进阶相关的教程内容。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-6-26 09:22 , Processed in 0.148029 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表