Unity网络游戏——Fisnet入门
Fisnet 入门
重要概念
服务器权威:数据改变只能在服务器上发生,
客户端权威:数据的改变可以在客户端上发生,意思是客户端也可以作为一个服务器

关键性组件
- NetWorkManager:可以在插件中预先设置的prefab中找到该名称的预制件,拖拽到场景管理器中,不做任何对象的子对象和父对象
2.NetworkObject:需要进行网络同步的对象添加该组件即可
3.NetworkTransform:在网络中同步该对象的Transform 变化信息
关键类
NetWorkBehaviour
本机判断
1 | private void Update() |
代表操作
在指定位置生成Player对象
如下图,在场景管理器中选择手动拖拽放置的游戏对象到下图红框区域的Spawns
首先需要在PlayerPrefab选择自己制作的玩家预制件
这个组件并不是唯一指定操作,可以自己手动创建一个,这个就可以作为参考对象

常规生成对象
Player的移动是被一个额外的组件控制着,同时那个组件上还有对权威的控制,如果需要生成对象就建议使用这个了
同时还还需要注意位置的差异,直接在Player本身上生成会收到缩放影响
动画同步
只需要在角色上新加入一个组件就可以了
组件冲突
使用物理组件和NetWorkTransform进行角色控制的时候,客户端这边会受到冲突,物理组件和网络位置控制会同时修改Transform中的位置信息,再加上网络延迟,会造成移动到一半又被网络位置控制影响
提示:mesh collider
同步参数
不同于手动设置Unity消息去实现内容变化响应的功能,应该是固定的标签,对于同步变量这个东西应该绑定了对应的客户端
同步变量的理解:还是需要进行远程过程请求,因为同步字段在最开始就限制着,就算是按照官方文档上的要求添加上了 WritePermission.ClientUnsynchronized 字段允许在本地进行修改,这样的结果不会被同步到客户端上。
ServerRpc很重要
客户端预测:
等待
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 mao的博客!