
目录
- 前言
- [一、安装 Mirror](#一、安装 Mirror)
- 二、常用组件介绍
- 上传到游戏服务器(Mirror内部同步)
- [上传到Web服务器 / 数据库(持久化存储)](#上传到Web服务器 / 数据库(持久化存储))
- 完整方案参考
前言
Unity Mirror 是一种支持状态同步的网络框架。
一、安装 Mirror
推荐通过 Package Manager 安装,确保兼容性:
- 打开 Unity 编辑器,进入 Window > Package Manager。
- 点击左上角 + → Add package from git URL...
- 输入以下地址并回车:
csharp
https://github.com/MirrorNetworking/Mirror.git#release
- 安装完成后,菜单栏会出现 Mirror 选项。
⚠️ 注意:若使用 Unity 2020.3 以下版本,可能需手动添加依赖包 com.unity.ugui@2.0.0 和 com.unity.nuget.newtonsoft-json@3.0.0 到 Packages/manifest.json
二、常用组件介绍
| 组件 | 用途 |
|---|---|
| NetworkManager | 核心控制器,管理连接、场景、玩家生成 |
| NetworkIdentity | 每个网络对象必须拥有,用于唯一标识 |
| NetworkTransform | 同步位置、旋转、缩放,支持插值与压缩 |
| NetworkRoomManager | 管理大厅-房间-游戏流程(适合 FPS/MOBA) |
| NetworkManagerHUD | 快速调试用 GUI(仅限开发阶段,发布时移除) |
| KCP Transport | 低延迟传输协议,适合实时游戏(默认推荐) |
上传到游戏服务器(Mirror内部同步)
如果目的是将数据上传到你的游戏服务器,以便同步给其他玩家或在服务器上保存状态,这是Mirror最基础的功能,也是最常见的用法。主要有三种方式:
- 网络消息 (NetworkClient.Send):最灵活、直接的方式。你可以从客户端向服务器发送自定义的网络消息。这是Mirror提供的"自定义网络消息"功能示例。
- 命令 ([Command]):主要用于客户端请求服务器执行操作,并可以附带参数。这是一个典型的[Command]用法示例。
- 状态同步 ([SyncVar]):从服务器"上传"数据到客户端。它不仅能从服务器同步到客户端,也能借助[Command]从客户端上传到服务器,非常适合保存血量、等级等频繁变化的状态。
上传到Web服务器 / 数据库(持久化存储)
如果你想将用户数据(如成就、金币)永久保存到数据库,或进行账号验证,那么你上传的对象是一个独立的 "后台服务器"或"Web服务"。
在这种情况下,Mirror本身不负责,你需要使用Unity通用的 UnityWebRequest。当主机端也是客户端时,可以混合使用。
完整方案参考
对于一些上线项目,你也可以参考从Mirror到数据库的完整技术栈:
- Mirror:构建游戏的核心网络逻辑。
- PlayFab:微软Azure的游戏后端平台,提供账号、排行榜、数据存储等成熟的云端服务。
- NHibernate + MySQL:自建服务器的选择,用于MySQL数据库的C#映射。