【Unity】Mirror网络框架

目录

前言

‌Unity Mirror 是一种支持状态同步的网络框架‌。

一、安装 Mirror

推荐通过 ‌Package Manager‌ 安装,确保兼容性:

  1. 打开 Unity 编辑器,进入 ‌Window > Package Manager‌。
  2. 点击左上角 ‌+‌ → ‌Add package from git URL...‌
  3. 输入以下地址并回车:
csharp 复制代码
https://github.com/MirrorNetworking/Mirror.git#release
  1. 安装完成后,菜单栏会出现 ‌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最基础的功能,也是最常见的用法。主要有三种方式:

  1. 网络消息 (NetworkClient.Send):最灵活、直接的方式。你可以从客户端向服务器发送自定义的网络消息。这是Mirror提供的"自定义网络消息"功能示例。
  2. 命令 (Command):主要用于客户端请求服务器执行操作,并可以附带参数。这是一个典型的Command用法示例。
  3. 状态同步 (SyncVar):从服务器"上传"数据到客户端。它不仅能从服务器同步到客户端,也能借助Command从客户端上传到服务器,非常适合保存血量、等级等频繁变化的状态。

上传到Web服务器 / 数据库(持久化存储)

如果你想将用户数据(如成就、金币)永久保存到数据库,或进行账号验证,那么你上传的对象是一个独立的 "后台服务器"或"Web服务"。

在这种情况下,Mirror本身不负责,你需要使用Unity通用的 UnityWebRequest。当主机端也是客户端时,可以混合使用。

完整方案参考

对于一些上线项目,你也可以参考从Mirror到数据库的完整技术栈:

  • Mirror:构建游戏的核心网络逻辑。
  • PlayFab:微软Azure的游戏后端平台,提供账号、排行榜、数据存储等成熟的云端服务。
  • NHibernate + MySQL:自建服务器的选择,用于MySQL数据库的C#映射。

【推荐100个unity插件之8】实现多人在线联机游戏------Mirror插件的使用介绍(附项目源码)

相关推荐
新手unity自用笔记1 小时前
unity网络基础_1
网络·unity·游戏引擎
谢斯10 小时前
[vscode] 使用unity打开vscode的取消.csproj的显示
ide·vscode·unity
魔术师Dix10 小时前
StartGame:Unity TDD 外部工程指南
学习·游戏·unity·c#·测试驱动开发
hsw8157739431 天前
第10章 软件架构的演化和维护 — 系统架构设计师
unity·系统架构·游戏引擎
tealcwu1 天前
【尝鲜】Unity 6.7alpha版本测试
unity·游戏引擎
懒狗跑ai的程序员Brain2 天前
如何利用粒子系统在unity制作一个烟花(粒子系统学习向)
学习·unity·游戏引擎
xcLeigh2 天前
Unity基础:材质与纹理入门——给物体穿上“衣服“
unity·游戏引擎·材质
unityのkiven2 天前
理解 GUILayout 与 EditorGUILayout,并探究 ScrollView 滚轮失效可能的原因
unity