李乐1997 发表于 2023-3-21 09:56

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

前言

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 游戏开发程序员进阶相关的教程内容。
页: [1]
查看完整版本: Unity游戏开发杂记:Unity_IL2CPP常见问题分析