英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。
什么是海市蜃楼?
Mirage 是一个适用于 Unity 的高级网络库。它模块化、高性能,并且设计易于使用,无论你是在制作 MMO、合作游戏还是 FPS。
Mirage 已在发布的游戏中通过实战检验,并且在设计时考虑了安全性,提供了许多工具来帮助防止多人游戏中的漏洞利用。
Mirage 是开源的。欢迎提交错误报告和反馈,你可以在 Github 上打开一个 issue 或加入 Discord。
快速浏览
// Server/Client events — listen from anywhere, no central manager needed
public class GameSetup : MonoBehaviour
{
public NetworkServer Server;
public NetworkClient Client;
private void Awake()
{
Server.Authenticated.AddListener(OnPlayerJoined);
Server.Disconnected.AddListener(OnPlayerLeft);
Client.Authenticated.AddListener(OnConnected);
}
private void OnPlayerJoined(INetworkPlayer player) { /* spawn logic */ }
private void OnPlayerLeft(INetworkPlayer player) { /* cleanup logic */ }
private void OnConnected(INetworkPlayer player) { /* client ready */ }
}
// NetworkBehaviour — SyncVars, RPCs, and Identity events
public class PlayerCombat : NetworkBehaviour
{
[SyncVar]
public int health = 100;
private void Awake()
{
Identity.OnStartServer.AddListener(OnStartServer);
}
private void OnStartServer() { /* server-side init */ }
[ServerRpc]
// Rate limit to block spam
[RateLimit(Refill = 1, MaxTokens = 5, Penalty = 10)]
public void CmdAttack(NetworkIdentity target)
{
// validate and apply damage
}
[ServerRpc]
[RateLimit(Refill = 1, MaxTokens = 5, Penalty = 50)]
// return values so client can await result to know if they were successful or not
public UniTask<bool> CmdBuyItem(int itemId)
{
if (!HasEnoughGold(itemId))
return UniTask.FromResult(false);
AddItemToInventory(itemId);
return UniTask.FromResult(true);
}
}
安装
要安装 Mirage,请按照以下步骤操作:
1) Mirage 需要至少 Unity 2022 LTS。你可以通过 Unity 网站或 Unity Hub 安装 Unity 2022 LTS。
你也可以使用更新的版本,但强烈建议使用 LTS 版本,因为较新的版本可能包含漏洞、故障,甚至可能直接破坏游戏项目。
2) 创建一个新项目或打开现有项目。如果打开现有项目,强烈建议在安装 Mirage 之前进行备份。
4) 添加 OpenUPM 注册表。点击 Edit 菜单,然后选择 Project settings...,选择 Package Manager,并像这样添加一个作用域注册表:
名称: OpenUPM
网址: https://package.openupm.com
作用域:
com.cysharp.unitaskcom.openupmcom.miragenetcom.miragenet.mirage
4) 关闭项目设置。
5) 通过点击 Window 菜单并选择 Package Manager 来打开包管理器。然后选择 Packages,My Registries,选择 Mirage 的最新版本并点击安装,如下所示:
6) 你可以随时返回包管理器卸载 Mirage 或升级它。
替代方法:通过 Git URL 安装
如果你希望直接从 GitHub 安装特定版本或哈希值,可以在 Packages/manifest.json 文件的 dependencies 部分添加以下行:
"com.miragenet.mirage": "https://github.com/MirageNet/Mirage.git?path=/Assets/Mirage#v156.2.4",
Migrate from Mirror
如果你已经有一个使用 Mirror 的项目,并且想将其迁移到 Mirage,建议查看我们的 迁移指南 以便顺利过渡。还请查看下面的标题,因为 Mirage 与其他网络库有一些主要区别。
与 Mirror 的比较
Mirage 是 Mirror 的一个硬分叉,增加了许多功能、性能改进和安全改进。
| 海市蜃楼 | 镜子 |
|---|---|
| 通过包管理器安装(OpenUPM 或 GitHub URL) | 从 Unity 资源商店安装 |
| 错误会以异常抛出 | 错误会被记录 |
[ServerRpc] |
[Command] |
[ClientRpc(target = RpcTarget.Owner)] |
[TargetRpc] |
| 事件:可从任何脚本监听,无中央管理器 | 重写方法:大型 NetworkManager 类,只有单个重写 |
| 遵循 C# 代码风格和约定 | 没有一致性 |
NetworkTime 可在 NetworkBehaviour 中使用 |
NetworkTime 是全局静态 |
| 可将任意数据作为消息发送 | 消息必须实现 NetworkMessage |
| 结构化 SocketLayer,所有传输保持一致的连接流程 | 每个传输实现自己的连接逻辑 |
Mirage 的一些显著功能:
- 结构良好的代码库 — 系统间边界清晰,易于导航和理解
- 无静态状态 — 多个服务器/客户端实例可以在同一个 Unity 进程运行
- 严格的错误处理 — 无效调用会抛出异常,使错误立即显现,而不是静默破坏状态
- 网络行为可以在根对象或子对象上
- 服务器 RPC 可以 返回值
- 位打包 可轻松优化网络消息并减少带宽
- 通过属性进行速率限制和最大长度 验证
- 错误标记 用于跟踪行为异常的客户端及其产生的错误
- 版本定义
- 快速播放模式支持
Mirage 建立在基本的支柱之上:
- 干净、可读的代码库,遵循 C# 规范
- 没有单例或全局静态状态
- 高测试覆盖率
开发环境设置
如果你想为 Mirage 做出贡献,请按照以下步骤操作:
Linux 和 Mac
1) 确保已安装 git。在 Linux 上,通过你的包管理器安装。在 macOS 上,它包含在 Xcode 命令行工具中。
2) 克隆 Mirage 仓库:
git clone https://github.com/MirageNet/Mirage.git
3) 在 Unity 2022.3 LTS 或更高版本中打开克隆的仓库。
窗口
1) 安装 git 或使用您首选的 git 客户端。
2) 以管理员身份,使用符号链接支持进行克隆:
git clone -c core.symlinks=true https://github.com/MirageNet/Mirage.git
如果你不想使用管理员权限,[为你的账户添加符号链接支持](https://www.joshkel.com/2018/01/18/symlinks-in-windows/)。
如果你不启用符号链接,你将能够在 Mirage 上工作,但 Unity 将看不到示例。
3) 在 Unity 2022.3 LTS 或更高版本中打开并尽情享受!
传输与套接字
Mirage 支持多种数据传输方式:
- 原生 UDP 套接字(Windows 和 Linux 默认)并可回退到 C# UDP 套接字(macOS 及其他平台默认)
- Steam(通过 MirageSteamworks)
- Epic 在线服务(通过 EpicSocket)
- WebGL 客户端的 WebSocket(通过 SimpleWebSocket)
相关项目
- MirageStandalone — 在没有 Unity 的情况下运行 Mirage 服务器
- Mirage.Core — 核心序列化和网络功能,独立于框架
- Mirage.Godot — Godot 的 Mirage 网络功能
贡献
- 请参阅上面的开发环境设置。
- Fork 这个 Mirage 仓库。
- 使用你新的 fork,创建你的功能分支:
git checkout -b my-new-feature - 然后提交你的更改:
git commit -am 'Add some feature' - 将其推送到分支:
git push origin my-new-feature - 提交一个 pull 请求,并让团队审核你的工作。 :smiley:
团队将尽快审核,并给出批准、要求修改或详细说明拒绝的原因。
感谢使用 Mirage,我们希望看到你的项目取得成功!
- 本文标题:Mirage - 适用于 Unity 3D 的易于使用的高性能网络库
- 本文链接:https://www.cn121.com/clientgame/miragenet-mirage.html
- 原项目:MirageNet/Mirage 版权归原作者 MirageNet 及贡献者所有
- 收录信息:本站于 2026-10-18 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
- 开源协议:收录时本项目采用 MIT(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。
- 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 MirageNet/Mirage。
- 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
- 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
- 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。