添加一个unet的管理器 Networkmanager服务器
在Spawn Info中能够设置当一个客户端链接进来的时候生成一个预设网络
Network Identity: 网络标识组件,须要同步的物体都必须添加这个组件ide
NetworkTransform组件: 添加后会同步位置信息3d
Networkmanager下的Registered Spawnable Prefabs : 须要在服务器进行生成的物体(同步物体) 须要注册到这里 而且注册的物体须要有Network Identity(网络标识组件) (只在服务器生成)orm
服务器调用的脚本须要继承NetworkBehaviourblog
继承后:继承
可使用父类中的字段 isLocalPlayer 来判断是不是本地客户端建立的自动生成物体 ,经过这个可让只有为True的才能控制本身,不然会控制全部自动生成的物体,()能够用于筛选 输入的处理)同步
可使用override OnStartLocalPlayer()来判断当前是不是本地客户端, 这个是方法,启动自动调用, 上边的是属性it
在服务器中调用方法须要添加[Command]标签,而且这个方法名要以Cmd开头 io
若是须要在全部客户端都同步服务器生成的物体,须要添加NetworkServer.Spawn(Object o);方法
在服务器上处理相似血量,这样不会出如今服务器中如碰撞检测后将物体销毁了可是客户端尚未碰撞到(延时致使) 而引起服务器中血量减小可是客户端没有减小.解决办法:
同步字段
在须要同步的字段前边添加[SyncVar] 就能够同步字段了 ,固然这个脚本要继承NetworkBehavior
在这个字段同步后若是须要调用一个方法, 就能够 [SyncVar(hook ="OnChangeHealth")]
这样在字段同步后会自动调用OnChangeHealth方法, OnChangeHealth必需要带有一个和字段类型同样的参数, 这个参数就是字段同步以后的值.
在服务器调用过的方法若是须要客户端再调用一遍的话须要在方法前边添加[ClientRpc] 方法要以Rpc开头 通常配合isLocalPlayer使用
OnStartServer() 当服务器启动时自动调用
添加空物体添加组件
能够经过修改这个属性修改是随机位置生成仍是按照顺序生成