多人联机开发中,
NetworkManager就是整个 Netcode 框架的「大脑」与「心脏」。它管着连接、生成、同步、场景、性能......几乎所有网络相关的核心逻辑。
一、引言
在 Unity 官方主推的 Netcode for GameObjects(简称 NGO) 框架中,NetworkManager 组件是当之无愧的 全局控制中心。它不只是一个简单的管理器,而是整个联机架构的「总指挥」:
- 管理服务器/客户端的启动、连接、断连状态
- 统一注册网络预制体,实现跨端动态生成
- 控制网络帧速率、带宽、插值等性能参数
- 处理场景同步、连接审批、ID 回收等高级逻辑
- 提供编辑器快速启动连接的调试入口
二、面板总览

NetworkManager 是 NGO 框架的单例组件,场景中只能存在一个激活实例(多实例会报错)。它的 Inspector 面板大致分为以下几个模块:
| 模块 | 核心作用 |
|---|---|
| 顶部提示栏 | 引导安装 Multiplayer Tools 工具包 |
| 基础运行配置 | 后台运行、日志级别、玩家预制体 |
| 网络预制体列表 | 注册所有需要动态生成的网络物体 |
| 通用网络核心 | 协议版本、传输层、网络帧速率 |
| 性能优化 | 网络变量插值 |
| 连接安全与超时 | 连接审批、超时时间 |
| 生成与 ID 管理 | 预制体强制一致、ID 回收机制 |
| 带宽优化 | RPC 哈希编码格式 |
| 场景同步 | 内置场景管理系统 |
| 连接启动入口 | Editor 快速启动按钮 |
三、逐模块
1. 顶部提示栏:Multiplayer Tools 工具包
面板最顶部有一个提示条,引导你安装 Multiplayer Tools。
- 作用:该工具包提供了网络分析器、性能监控、网络调试、流量统计等一系列联机开发必备工具。
- 开发建议 :开发阶段必须安装 。通过
Package Manager→ 搜索Multiplayer Tools即可一键安装。发布项目时可以保留,用于线上问题排查。
2. 基础运行配置:联机游戏的必设基础项
| 配置项 | 功能说明 | 开发建议 |
|---|---|---|
| Run In Background | 勾选后,游戏在后台运行时仍保持网络连接 | 联机游戏强制勾选。否则玩家切到后台就直接断连,体验血崩。纯单机可忽略。 |
| Log Level | 控制网络日志输出级别:Error / Normal / Debug |
开发期用 Debug,方便排查连接、同步问题;发布期用 Error,减少日志开销。 |
| Player Prefab | 玩家预制体,客户端连接时服务器自动生成 | 预制体必须挂载 NetworkObject 组件 ,否则无法生成。建议同时挂载 NetworkTransform(位置同步)和 NetworkAnimator(动画同步)。 |
3. Network Prefabs Lists:网络预制体统一管理
这个列表用于注册所有需要在网络中动态生成的预制体(怪物、道具、特效、子弹等)。
- 核心作用 :调用
Spawn()方法前,预制体必须在此注册,否则服务器无法将其同步到客户端。 - 配置方式 :可以直接在面板中添加单个预制体,也可以使用
NetworkPrefabsList资产统一管理(推荐大型项目)。 - 常见坑 :新手最常犯的错误就是忘记注册预制体,然后调用
Spawn()时直接报错。务必养成注册习惯。
4. General:通用网络核心配置
| 配置项 | 功能说明 | 开发建议 |
|---|---|---|
| Protocol Version | 网络协议版本号,用于客户端-服务器版本校验 | 只有版本号完全一致的客户端才能连接。大版本更新时必须修改此值,避免旧客户端连入导致同步异常。 |
| Network Transport | 网络传输层,NGO 默认使用 Unity Transport(基于 UDP 的轻量传输) |
满足绝大多数场景,无需修改。如需 P2P 跨网联机,可集成 Unity Relay 服务。 |
| Tick Rate | 网络帧速率(次/秒),服务器/客户端每秒处理网络消息的次数 | 30 是平衡性能与同步的黄金值。动作/竞技类游戏可提升至 45--60,提升流畅度;休闲/回合制可降至 20--30,节省带宽。 |
⚠️ 注意:
Tick Rate不是帧率,而是网络消息的处理频率。调高会增强同步精度,但也会增加带宽和 CPU 开销。
5. Performance:网络性能优化
| 配置项 | 功能说明 | 开发建议 |
|---|---|---|
| Ensure Network Variable Lerp | 控制 NetworkVariable 是否启用插值平滑 |
勾选后网络变量会做插值运算,大幅减少抖动带来的卡顿和瞬移。联机游戏建议必勾。仅在同步精度要求极高的场景可关闭。 |
6. Connection:连接安全与超时控制
| 配置项 | 功能说明 | 开发建议 |
|---|---|---|
| Connection Approval | 启用连接审批,支持自定义玩家连接校验逻辑 | 正式项目必须启用。可以通过代码实现黑名单、Token 校验、房间人数限制等自定义逻辑,防止非法连接。 |
| Client Connection Buffer Timeout | 客户端连接缓冲超时时间(秒) | 客户端发起连接后,若在指定时间内未完成则自动断开。默认 10 秒,弱网环境可适当延长至 15--20 秒。 |
7. Spawning:网络对象生成与 ID 管理
这个模块是长时间运行服务器的关键配置。
| 配置项 | 功能说明 | 开发建议 |
|---|---|---|
| Force Same Prefabs | 强制客户端与服务器的网络预制体完全一致 | 避免预制体版本不一致导致的生成异常,正式项目必勾。 |
| Recycle Network Ids | 启用 NetworkObjectId 回收机制 | 销毁网络对象后回收其 ID 复用,避免长时间运行的服务器 ID 耗尽。长线项目必勾。 |
| Network Id Recycle Delay | ID 回收延迟时间(秒) | 销毁对象后等待指定时间再回收 ID,避免客户端延迟导致的 ID 冲突。默认 120 秒,一般 60--120 秒足够。 |
🧠 原理:每个网络对象都有唯一的
NetworkObjectId。如果不回收,服务器运行几天后可能 ID 耗尽,无法生成新对象。回收机制通过延迟复用避免冲突。
8. Bandwidth:带宽优化配置
| 配置项 | 功能说明 | 开发建议 |
|---|---|---|
| Rpc Hash Size | RPC(远程过程调用)哈希值的编码格式,可选 Two Bytes / Four Bytes / Var Int Four Bytes |
默认 Var Int Four Bytes,支持大项目的海量 RPC 数量。小项目可选择 Two Bytes 节省带宽。 |
9. Scene Management:场景同步管理
| 配置项 | 功能说明 | 开发建议 |
|---|---|---|
| Enable Scene Management | 启用 NGO 内置场景管理系统 | 勾选后由服务器主导场景加载,客户端自动同步场景状态,避免手动同步的复杂逻辑。绝大多数项目建议启用。 |
| Load Scene Time Out | 场景加载超时时间(秒) | 服务器加载场景后,客户端在指定时间内未完成加载则断开。默认 120 秒,大型场景可适当延长。 |
10. Start Connection:连接启动入口
面板底部的三个按钮,仅在 Editor 运行时可用:
- Start Host:启动主机(同时作为服务器+客户端),适合开房间、本地联机、单人开服。
- Start Server:仅启动服务器,不启动本地客户端,适合专用服务器部署。
- Start Client:仅启动客户端,连接到指定服务器。
📦 打包后需通过代码调用
NetworkManager.StartHost()/StartServer()/StartClient()启动连接,面板按钮无效。
🔗 进阶学习资源
- Unity 官方 NGO NetworkManager 手册
- Multiplayer Tools 工具包文档
- NGO 官方示例项目:
Boss Room(完整联机游戏案例,可参考 NetworkManager 配置)