多语言展示
当前在线:1997今日阅读:19今日分享:20

Unity unet多人游戏同步入门技巧①

众所周知,Unity游戏引擎的UNET网络模块,主要思路服务器权威的。所有客户端到服务端的数据发送只能从玩家的游戏对象上发出。但是如果玩家突然掉线,同步的数据怎么办呢?本经验介绍了一点技巧。
工具/原料

Unity

方法/步骤
1

要进行多人游戏的数据同步,首先我们1.要在场景中有一个物体上,带有Network Manager组件(改组件可以被继承和修改)2.需要有一个表示玩家对象的预制体,且该玩光海戴家预制体带有NetworkIdentity组件。

2

我们首先用一张图简要说明使用玩家对象进行同步的流程。绿色是无所不能的绝对权威,蓝色是可以发送数据和命令的,灰色是只有接收数据王颂的份。黄色箭头是[Command]方法调用,橙色箭头是[ClientRpc]方法调用。

3

而现在,我们想要一个“灰色”的对象,可以接受数据,但是又不希望玩家掉线这个对象也消失。实际上,我们只需要新建一个游戏物体,给它一个NetworkIdentity组件。

4

我们给它添加一个脚本,这个脚本要继承自NetworkBehaviour, 里面储存所有想同步的变量。

6

这个游戏对象是不会因为玩家掉线而清除的,只是会被禁用。当再次连线的时候,这个对象里面的数据不会改变。当然,它真的没办法和服务器通讯吗?显然不是。我们只要搞到一个本地玩家对象的引用,就可以迂回的发送数据到服务器了。如图所示。

注意事项

如果我们想要实现断线重连等复杂功能,可以自己继承NetworkManager, 重载一些事件方法。

推荐信息