4.6.x IL2CPP问题汇总

本文记录了在使用Unity 4.6.x版本进行IL2CPP构建64位游戏时遇到的问题,包括ICSharpCode ZipInputStream在64位环境下异常、与ulua的类型兼容性问题、调试与发布模式下的运行差异、编译链接错误以及与Pomelo服务器的网络通信问题,并提供了相应的解决方案。
摘要由CSDN通过智能技术生成

使用4.6.x发布64bit游戏时, 需要用到IL2CPP做scriptingEnd. 过程中遇到了一些问题,一一记录如下。

1. 4.6.3使用IL2CPP后, ICSharpCode的ZipInputSteam read返回值不对,在64bit下不会返回0,导致解压缩一个文件夹时,持续写入第一个文件到无穷大. 解决办法: 使用unity4.6.9f1, 并下载icsharpcode源代码,自行编译最新的dll. 但是实际上,只编译icsharpcode,不使用4.6.9f1的时候, 毫无改变。所以应该是4.6.9f1改掉了一些bug


2. 4.6.9配合ulua,某些情况下会遇到无法wrap ulua类型的情况,大多数为范型, 比如List<XYZ>, 而此时打印过warning后, il2cpp会抛出一个异常Il2CppExceptionWrapper, 导致程序终止运行.解决办法:找到不能wrap的类型并绕行,或者暂时修改il2cpp生成的源代码,不理会exception, 但可能会存在更多隐患. 本次修改是加入了try catch(因为是il2cpp 生成,所以函数名可能会变,但是原理相同)

MetaFunctions_runFunctionDelegate_m11981会抛出异常,导致程序终止运行,所以改成如下有try catch的语句.

try {
    L_8 = LuaCSFunction_Invoke_m18905(L_6, L_7, /*hidden argument*/NULL);
}
catch (Il2CppExceptionWrapper&a
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值