U3D网络组建

Network manager:unity官方提供联网组件

可以指定player prefab:即每连入一个客户端就生成一个player prefab

Network manager HUD:用来显示左上角UI

Network Identity:局域网的标识符

Server only 只存在于服务器端

Local player authority:每一个都有

Network Transform :用来同步位置(通过当前player来同步到其他客户端上)

Ctrl+ D build and run一个版本

unityEngine.Networking

平常一个脚本类是继承自MonoBehavior,网络的类的话得继承NetBehavior,因为这个类有一个静态方法:isLocalPlayer,用来判断是不是本地玩家,以防止操作混乱,isSever用来判断是不是服务器端

Public override void OnStartLocalPlayer()//这个方法只会在本地角色调用,在角色被创建的时候


Networksever的静态方法spawn()可以生指定物体同步到各个客户端

Networktransform组件可以同步transform 和 刚体组件

 

血条的展示:

Canvas->Slider :

Background:背景色

FIll Area->FIll:拖动之后的颜色

Handle Side Area:托条

做血条的时候托条不需要,直接删除,拖动之后的颜色无法填充慢整个条,需要吧Fill Area->Fill拖动到Background下面,然后把Fill Area删除掉,找到FIllRect Transform的锚点对齐,按alt+右下角的来对齐

 

 

相关检测,逻辑判断等只在一个端口检测(客户端或者服务器端)不然,比如服务器端检测到了后执行相应的操作同步到客户端会造成不想要的结果

 

子弹生成应该在服务器端生成然后同步到客户端,需要在子弹的prefab上添加network identity 然后拖到network manager上的prefab list      在函数头上面添加[Command]说明旨在服务器端调用,函数必须以cmd开头

服务器端如何同步?

在需要同步的变量前添加[SyncVar]的字段,让该变量拥有同步的属性

[SyncVar(hook = “方法名”)]当被检测的变量(需要同步的变量)的值发生改变的时候调用该方法,在每个客户端都会进行调用

[ClientRpc]表示方法在客户端调用,该方法必须以Rpc开头

跟角色有关的用localPlayer来处理用其他客户端来同步

 

一个脚本挂在不同用处的的对象上是,如要区分,可加入一个publuic布尔变量,在需要执行的一方勾选

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值