Unity5.3.1f1 Network 局域网实时联网demo

本以为基于UNET的实时联网会很快地解决,显然UNET还是不成熟的。

这里记录一下跑一个局域网实时连网的小demo。

目前的项目需求是:局域网联网,实时互动。

于是干活的流程如下:

  1. 找到了Asserts Store上的一个例子,并且这个demo是免费的而且不断地在更新。Network Game Lobby(beta)
  2. OK,这里面有连接到作者自建的网站(解决了网络发现的问题),也有局域网内的直连,最后都开启了一个小的飞船游戏。界面是这个样子的Unity5.3.1f1 Network 局域网实时联网demo_第1张图片
  3. 去掉我不需要的功能,然后我需要解决网络发现的问题,嗯参考一下CS,局域网内UDP广播,其他人接收,恩,把服务器列表放在这个界面中随时显示有哪个主机。于是界面就变成了这个样子Unity5.3.1f1 Network 局域网实时联网demo_第2张图片
  4. 联网机制不变,还是用的上层的UNET联网功能,建主机,同意,全部同意后场景跳转加载游戏。修改一下挂在LobbyManager上的NetworkLobbyHook脚本,把想初始化的数据放进去,这里作者给我埋了个坑spaceship.name = lobby.name;我一直以为是把用户名传过去了,一直在找为啥没传过来呢?结果最后发现用户名是这个spaceship.playerName = lobby.playerName; 。。。。。
  5. 好了,现在要把游戏场景替换掉,把模型神马的都删了,加个场景进去,把飞船替换成人。
  6. 应该是我的这个人物的逻辑太乱了,本来就捆个CharactorController,然后又加了个第三人称控制脚本上去,结果我把人物加上NetworkTransform(同步位置)和NetworkAnimator(同步人物动画)各种无效和错误。
  7. NetworkIdentity据说是控制谁可控谁不可控,我还测试了一下,虽说很轻松就实现了这些所谓的功能,但是毕竟不是开源的,测测也好。
  8. 我经历了,替换人物Animation为Animator、去掉CharactorController自己实现位移和跳跃后还是不行,最后还是通过 syncvar变量自己实现了动画和位置角度同步。
  9. 估计这些bug会在后续的版本中修正吧。
Unity5.3.1f1 Network 局域网实时联网demo_第3张图片

你可能感兴趣的:(Unity3D)