U3D网络部分学习笔记

1.对于一个联机游戏而言,首要的就是创建一个Empty的Object,在其上添加NetworkManager和NetworkManager HUD组件。还有就是不要忘记在脚本的最开始加入using UnityEngine.Network。

前者可以控制Player的自动生成,后者则是进入联机游戏时的UI部分(可以选择以Server还是Client身份连入游戏,填写主机地址等)。

2.对于Player人物的同步,可以通过直接在Player上添加组件Network Transform(除了同步Transform信息还可以同步Rigidbod信息,如速度等)和Network Identity来实现。注意:在脚本中通过IsLocal来保证每个端只能控制该端的LocalPlayer。

3.各种游戏逻辑实际都是放在服务器端完成的。在生成子弹时(不管是哪个Player发出的),也是如此,然后同步到各个客户端。

首先,要让子弹在网络中生成,需要将Bullet放在NetworkManager的List里(要先确保Bullet里有NetworkIdentity组件)。

然后,因为是在服务器端控制子弹的生成,在其他客户端调用函数,所以要在脚本中Fire函数前加上[Command],并将Fire函数名改为CmdFire。此时,在运行游戏,打开一个服务器端一个客户端。在客户端中控制LocalPlayer发射子弹,发现客户端中没有反应,而在服务器端却是正常的,这就需要我们对子弹进行同步。在CmdFire里加入语句,NetworkServer.Spawn(bullet);。之后再次启动游戏,在客户端中发射子弹,发现客户端种可以产生子弹了,但是子弹却没有速度。此时,再在Bullet中添加NetworkTransform即可。大功告成!



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值