Unity学习多人游戏的网络同步入门

  • Post author:
  • Post category:其他



unity中网络的同步是通过组件NetworkManager和NetworkManagerHUD来实现的。


第一步创建网络管理器:


在场景中创建一个空物体命名为NetworkManager并添加NetworkManager组件和NetworkManagerHUD组件


第二步:设置NetworkManager组件


注册PlayerPrefab:在SpawnInfo下为PlayerPrefab添加事先完成的带有NetworkIdentify组件的预制体并勾选NetworkIdentify下的选项LocalPlayerAuthority使客户端有权限控制角色。


第三步:实现服务器和客户端的玩家运动同步


为玩家预制体添加NetWorkTransform组件,NetworkTransform组件是仅用来同步玩家的运动,其他玩家信息的同步需要用到其他的东西。注意,由于不同的客户端在生成时物体完全一样,那么当输入移动命令时为了防止所有客户端的玩家一起运动,控制玩家运动的脚本需要具有网络意识:在脚本中添加usingUnityEngine.Networking,将Monobehaviour换成NetworkBehaviour并在脚本中通过isLocalPlayer来判断是不是本地玩家。另一种方式使脚本具有网络意识的方法是使用[Command]属性,官网上的解释是被[Command]属性修饰的函数将在服务器上执行,在客户端上调用,这样可以通过服务器来区分是哪个客户端调用了方法,从而达到了区分的目的。[Command]的用法:加在函数定义的前面,被[Command]修饰的函数名需要加上前缀Cmd。

同步变量:[SyncVar]

同步与变量相关的函数:[SyncVar(hook=”函数名”)]




版权声明:本文为z1844306480原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。