Unity iOS IPv6 - IL2CPP UnityEngine.Experimental.Networking崩溃

时间:2016-06-09 10:53:29

标签: ios unity3d crash ipv6 il2cpp

为了能够再次提交到应用程序商店(对于已发布的游戏),我们必须让IPv6工作。因此我们将Unity更新为5.3.5p2版本(可用的最新修补版本)

我们重新处理了所有的网络接口(我们过去常常使用经典的http请求进行后端服务器com和套接字连接以进行资产下载)我们使用UnityEReine的UnityWebRequest,DownloadHandler和UploadHandler交换了所有内容.Experimental.Networking

在编辑器和Android上一切正常,但对于iOS,它只是......崩溃。

我们正在使用:Unity 5.3.5p2 xCode 7.2 和iPad2与iOS 9.3.2 构建设置: IL2CPP 通用架构(最低iOS 7.1) API级.Net 2.0 剥离引擎代码设置为OFF AOT-Compile选项设置为:mint-trampoline 512(我们将它用于单脚本编写后端) 在Xcode上: Bitcode被禁用 优化级别设置为(用于发布和调试):无[-O0] 以下是游戏运行时我们在控制台上遇到的错误:

  

无法找到方法GetProgress   [UnityEngine.dll] UnityEngine.Experimental.Networking.DownloadHandler   。   。   无法找到方法ReceiveContentLength   [UnityEngine.dll] UnityEngine.Experimental.Networking.DownloadHandler   。   。   [项目名称]是通过优化编译的 - 步进可能表现得很好   奇怪;变量可能无法使用。

(我们非常简单地使用托管静态缓冲区实现了DownloadHandlerScript)

当我们使用mono构建脚本后端时,一切正常。但IL2CPP对我们来说是强制性的。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

  

当我们使用mono构建脚本后端时,一切正常。但   IL2CPP对我们来说是强制性的。

您从UnityWebRequest调用的函数很可能尚未在IL2CPP方面实现,或者这是一个普通的错误。

请注意,您使用UnityWebRequest命名空间中的UnityEngine.Experimental,这显然是UnityWebRequest的实验版本尚未成熟。您需要下载Unity 5.4的最新版Unity。在5.4中,UnityWebRequest被移动到UnityEngine.Networking命名空间,并且在该新版本中修复了更多错误。下载Unity的5.4.0b21 here

如果不起作用,请使用Unity WWW API而不是UnityWebRequest。 > = 5.3版本中的IPv6 safe。如果在将Unity更新为5.4后UnityWebRequest不起作用,也会报告错误报告。

答案 1 :(得分:0)

这可能是托管代码剥离的问题。我在Unity论坛上发布了一个可能的工作:

http://forum.unity3d.com/threads/unity-ios-and-ipv6-support.404938/#post-2670944