1.jpg

Unity在5.1版本为开发者提供了全新的多玩家在线工具Unity Networking。通过此项技术,用户可以实现包括通讯层的数据传输,低阶的NAT支持以及高阶的游戏配对。Unity希望开发者们能够创造出支持任意玩家数量的多人在线游戏。

多人在线的实现方法

我们可以将多人在线功能的实现分为底层和上层两个部分。底层就是通讯层,通过NetworkTransport类进行实现。这一层内容在Unity引擎中是通过C++编写,其主要目的是优化Socket接口的通讯传输。在其之上,我们同时提供了使用C#编写的、以DLL文件形式存在的high level API。这些文件我们已经开源,用户只需遵守MIT/X11协议,便可以根据自身需要,对代码进行修改与替换。

两个抽象层的使用介绍

可扩展DLL文件中的内容我们可以将其看为两部分:high level和low level。当使用NetworkClient 和NetworkServer类时,你可以在low level层面手动地建立连接,而使用NetworkManager和NetworkLobbyManager则可以实现high level的访问。将上述NetworkClient等组件添加到游戏对象后,即可在该游戏对象的inspector窗口获得相应的链接选项以及内置的HUD组件。当然,你也可以修改、扩展这些类,实现自定义的行为和功能。上述内容都是基于C/S架构以及服务器授权模式实现。当你想更好地了解和使用通讯层,或者去实现你自定义的 high level API时,这些类会是绝佳的参考资料。

注意事项

我们所提供的资源包含三个VS工程文件:分别针对真机,编辑器,以及编辑器运行。"编辑器运行时"在编辑器进入playmode时执行。引擎内部的Update方法必须可以找到NetworkIdentity.UNetUpdate()方法,否则该Update将无法正常运行。在编辑器中,我们还将实时的进行一些代码编译,该工具叫做UNetWeaver,我们同时在考虑将这部分内容开源。这个工具是将NetworkBehavior编译成一系列的序列化代码,Command/ClientRPC程序,和各种查询列表。扩展时必须注意保持名称一致(如SyncVar、Command等),以保证相对应的功能可正常使用。