【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插件的使用介绍(附项目源码)

相关推荐
顾温1 小时前
协程结束——实测
开发语言·unity·c#
小白学鸿蒙15 小时前
Unity 3D 2023解压安装,配置安卓运行环境后打包安卓应用(踩坑无数之差点放弃)
android·unity·游戏引擎
__water1 天前
【关于unity打包Android失败问题】
android·unity
mascon1 天前
Unity 编辑器扩展
unity·编辑器·游戏引擎
程序员正茂1 天前
Unity3d使用MQTT异步连接服务端
mqtt·unity·异步
mxwin2 天前
在unity shader中,通过pass产生阴影,通过主pass的光照 接收阴影!那么问题来了,是先产生阴影吗?还是先接收阴影,执行顺序是啥呢
数码相机·unity·游戏引擎·shader
小贺儿开发2 天前
《唐朝诡事录之长安》——盛世马球
人工智能·unity·ai·shader·绘画·影视·互动
蒙双眼看世界2 天前
Unity结合ECharts图表及网页插件EmbeddedBrowser的应用开发
unity·游戏引擎·echarts
郝学胜-神的一滴2 天前
中级OpenGL教程 004:为几何体注入法线灵魂
c++·unity·游戏引擎·godot·图形渲染·opengl·unreal