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

来源:互联网 发布:new blue 插件 mac 编辑:程序博客网 时间:2024/06/05 00:36
    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="函数名")]

0 0
原创粉丝点击