Version: 2022.2
多玩家和联网
设置多人游戏项目

多人游戏概述

Important: UNet is a deprecated solution, and a new Multiplayer and Networking Solution (Netcode for GameObjects) is under development. For more information and next steps see the information on the Unity Netcode for GameObjects website.

网络功能有两种用户:

  • Users making a Multiplayer game with Unity. These users should start with the NetworkManager or the High Level API.
  • Users building network infrastructure or advanced multiplayer games. These users should start with the NetworkTransport API.

高级脚本 API

Unity 的网络功能有一个“高级”脚本 API(我们称之为 HLAPI)。使用此 API 意味着可以访问满足多用户游戏大多数常见要求的命令,而无需担心“较低级别”的实现细节。HLAPI 提供以下功能:

  • 使用 Network Manager 来控制游戏的联网状态。
  • 操作“客户端托管的”游戏,这种情况下的主机也是玩家客户端。
  • 使用通用序列化程序来序列化数据。
  • 发送和接收网络消息。
  • 将联网命令从客户端发送到服务器。
  • 执行从服务器到客户端的远程过程调用 (RPC)。
  • 将联网事件从服务器发送到客户端。

引擎和 Editor 集成

Unity 的联网系统集成在引擎和 Editor 中,因此便于使用组件和视觉辅助工具来构建多人游戏。该系统具有以下功能:

  • 用于联网对象的 NetworkIdentity 组件。
  • 用于联网脚本的 NetworkBehaviour
  • 可配置的对象变换自动同步。
  • 脚本变量自动同步。
  • 支持在 Unity 场景中放置联网对象。
  • 网络组件

互联网服务

Unity offers Internet Services to support your game throughout production and release, which includes:

  • 配对服务
  • 创建比赛和通告比赛。
  • 列出可用的比赛和加入比赛。
  • 中继服务器 (Relay Server)
  • 基于互联网但无专用服务器的游戏。
  • 比赛参与者的消息传送。

NetworkTransport 实时传输层

We include a Real-Time Transport Layer that offers:

  • 基于 UDP 的优化协议。
  • 多通道设计可避免线头阻塞问题
  • 每个通道支持各种级别的服务质量 (QoS)。
  • 灵活的网络拓扑可支持对等架构或客户端/服务器架构。

身份验证

Unity 的网络系统实现了简单的内置身份验证功能,这些功能为验证会话提供了基本支持,但并不是可靠的身份验证解决方案。

可靠的身份验证可能是开发多人游戏项目的重要因素,因为它有助于防止恶意用户劫持玩家会话、冒充其他用户、使合法玩家与游戏断开连接或其他针对游戏或应用程序的恶意行为。

Because Unity only provides simple built-in authentication, if you require robust protection against malicious actions in your game or app, you should use 3rd party authentication and encryption solutions, or implement them yourself using plugins such as this reference implementation and the NetworkTransport API.

示例项目

还可以深入了解我们的多人游戏示例项目,了解这些功能如何配合使用。可在此 Unity 论坛帖子中找到以下示例项目:

  • 多人 2D 坦克示例游戏
  • 具有配对功能的多人入侵者游戏
  • 具有配对功能的多人 2D 太空射击游戏
  • 最小的多人游戏项目
多玩家和联网
设置多人游戏项目