查看原文
其他

Unity对IPv6协议的支持

2016-05-11 Unity官方 Unity官方平台
Apple最近宣布从2016年6月1日起“所有的提交到App Store的应用必须支持纯IPv6的网络。” 由于我们很多用户都会发布使用Unity制作的游戏到App Store,所以这里花点时间来讲解一下Unity对于纯IPv6网络的支持。注意,Apple这项规定针对所有新提交的应用或对已提交应用的更新
什么是IPv6?
维基百科上写道:“因特网通讯协议第六版(IPv6)是最新版的因特网通讯协议,这个通讯协议为网络上的计算机和路由通讯设备提供了身份识别和定位系统。”设备可以在纯IPv4网络(前一个标准版本),纯IPv6网络,或者两个协议的混合网络上运行。苹果的新要求意味着,所有的应用必须可以在只使用IPv6协议的网络上运行。

重点是要理解IPv4 和 IPv6网络之间是不能进行交互的,虽然可以使用管道技术在两种类型的网络间进行信息传输。
Unity支持IPv6吗?
在iOS平台上WWW和UnityWebRequest已经完美兼容IPv6了,它们基于Apple高层的网络API。过去几个月我们也在努力让Unity的.NET/IL2CPP库可以支持仅使用IPv6的网络。我们已知的最新.NET/IL2CPP支持IPv6相关的Bug已于补丁版5.3.4p4中修复。还有一个UNET相关的Bug会在后面几周发布的补丁版本修复。在此要感谢Unity社区热心成员(如 Exit Games)的支持与反馈,帮助我们消灭了Unity引擎核心部分的一些Bug,并针对以下平台完成了对IPv6的支持:
  • 编辑器:全平台(Windows、Mac、Linux)

  • PC端:全平台(Windows、Mac、Linux)

  • iOS

  • Android


我们后续还会继续为其它平台添加纯IPv6网络支持。
旧版Unity怎么办?
如果你的工程使用WWW或UnityWebRequest API从网络获取资源,就不用担心这个问题。但如果还存在其他网络访问方式,就要认真测试了。

我们计划将.NET/IL2CPP修复应用到一些旧版Unity系列中,将以4.7.2,5.1.5,5.2.5的版本发布。
现在该做什么?
首先,将你的游戏设置为仅使用IPv6访问网络的模式,然后测试游戏的所有功能是否运行正常。Apple已经提供了如何在OS X 10.11(或以上版本)的Mac电脑上设置IPv6网络的指南。这些操作步骤与App Store审查员使用的步骤是一样的,所以测试IPv6网络时有很好的参考价值。因为IPv4与IPv6网络是互不兼容的,应仅使用IPv6网络来进行测试以确保一切正常运行。如果你的设备同时拥有IPv6和IPv4地址,则socket会使用IPv4连接网络。

其次,复查你的代码,看看是否可能存在下面的问题:
  • 注意IPv4格式地址的使用,应移除代码中所有硬编码的IP地址。建议优先使用主机名(hostname),设备可以根据当前正在使用的网络类型获得对应的IPv4或IPv6地址。

  • 注意IPAddress.AddressFamily属性的用法。如果代码分支是根据该属性值建立的,是否有专门处理IPv6分支的代码呢?

  • 注意IPAddress.Any和IPAddress.Loopback属性,这些字段是为IPv4准备的。如需使用IPv6版本,请使用IPAddress.IPv6Any和IPAddress.IPv6Loopback字段。


如果遇到上述问题,请确保使用已经修复该问题的Unity版本。如果你所使用的系列(4.7.x, 5.1.x, 5.2.x)暂未更新该修复,请等待我们发布补丁版本后升级至已修复版本。
一些第三方的原生或托管的网络插件可能也与IPv6网络不兼容,这种情况下请联系插件厂商咨询相关的兼容信息。
最后,如果遇到任何与IPv6相关的Unity Bug请及时向我们反馈,我们会尽快进行修复。针对App Store规定相关的问题,请访问论坛的iOS和tvOS开发版块,Unity官方工程师会及时解答大家的问题。
延展阅读

Unite 2016|Unity 5.x编辑器新功能:Memory Profiler

Unite 2016|Unity 5.x编辑器新功能Frame Debugger

Unite 2016|教你轻松玩转Shader

Unite 2016|Asset Store流行插件之“实用小工具”

Unite 2016|Unity 5.4的GPU Instancing功能简介


我们还会分享更多Unity相关的技术教程在Unity官方中文论坛(forum.china.unity3d.com),请保持关注!







点击“阅读原文”进入Unity官方中文论坛!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存