前言
本文均为作者摸索得出的经验,主要介绍制作联机游戏的逻辑代码,比如生成/销毁物体,逻辑同步等。以下内容仅仅是NGO的冰山一角,用于快速开发联机内容,我会在以后的文章里更新NGO类型的详细介绍
作者的信息源:
- youtube code monkeyLearn Unity Multiplayer (FREE Complete Course, Netcode for Game Objects Unity Tutorial 2023) (youtube.com)
- bilibili:Unity多人游戏学习:从MLAPI到Netcode for GameObjects_哔哩哔哩_bilibili
- 官方文档:About Netcode for GameObjects | Unity Multiplayer Networking (unity3d.com)
基础知识
Host/Client/Server
Client,Server是客户端和服务器,没什么好说的。Host就是将一个Client作为Server,而不额外创建Server。Host既是Client,也是Server,进行消息分发。
unmanaged value(非托管类型)
作为下文的 NetworkVariable和Rpc函数的参数
在我的学习范围内,只有非托管类型才能被网络传输,包括了数值与字符流(不是String,是指形如FixedString64Bytes的固定长度类型),也可以使用自定义类,但是它的字段必须全是unmanaged,并且实现INetworkSerializable接口。
有兴趣可以了解:
NGO官方文档介绍Custom Serialization | Unity Multiplayer Networking (unity3d.com)
C#官方介绍:Unmanaged types - C# reference - C# | Microsoft Learn