当前位置: 首页 > news >正文

Unity插件-Mirror使用方法(一)Mirror介绍

目录

一、使用介绍

二、插件介绍

1、简述

2、核心功能与特点

基于组件的高层抽象

服务器-客户端架构

序列化与同步

可扩展性与灵活性

跨平台支持

社区与生态

3、典型应用场景

4、基本使用示例

安装

设置 NetworkManager

同步变量与 RPC

5、优缺点对比

6、为什么选择 Mirror?

7、常见问题

1️⃣ 检查 Unity 版本

2️⃣ ​通过 Package Manager 安装依赖

3️⃣ ​手动修改 manifest.json

4️⃣ ​验证依赖是否加载


一、使用介绍

插件来源:Unity AssetStore

(Mirror | 网络 | Unity Asset Store)

Github:GitHub - MirrorNetworking/Mirror: #1 Open Source Unity Networking Library

官方网页:Mirror Networking – Open Source Networking for Unity

官方文档:Mirror Networking | Mirror

使用版本:Unity 2022.3.53f1c1、Mirror 96.0.1


二、插件介绍

1、简述

Unity Mirror 是一个专为 Unity 引擎设计的开源、社区驱动的网络库,主要用于简化多人联机游戏的开发。它最初是为了替代 Unity 原生的 UNet 系统(已被官方弃用)而创建的,因其轻量、灵活和高效的特点,成为 Unity 开发者构建多人游戏的热门选择。


2、核心功能与特点

基于组件的高层抽象

  1. Mirror 提供了 NetworkManagerNetworkIdentityNetworkBehaviour 等组件,开发者只需通过继承和配置这些组件,即可快速实现网络同步逻辑,无需深入底层协议细节。

服务器-客户端架构

  1. 支持权威服务器模式(服务器控制逻辑,客户端仅负责输入和渲染)。
  2. 提供 NetworkServer 和 NetworkClient 类,管理连接、消息处理和对象同步。
  3. 支持 LAN 和互联网联机,可通过 Relay 服务器(如 Steam)实现 NAT 穿透。

序列化与同步

  1. 变量同步:通过 [SyncVar] 属性标记变量,自动将状态从服务器同步到客户端。
  2. 指令同步:使用 [Command](客户端调用服务器方法)和 [ClientRpc](服务器调用客户端方法)实现远程过程调用(RPC)。
  3. Transform 同步:内置 NetworkTransform 组件自动同步物体位置、旋转和缩放。

可扩展性与灵活性

  1. 支持自定义序列化、消息类型和网络传输层(如 TCP、UDP、WebSockets)。
  2. 允许开发者覆盖默认行为(如连接认证、对象生成规则)。

跨平台支持

  1. 兼容 Unity 支持的几乎所有平台(PC、移动端、主机、WebGL 等)。

社区与生态

  1. 丰富的文档和示例项目(如多人射击、RPG、实时策略模板)。
  2. 活跃的 Discord 社区和 GitHub 仓库,便于问题解决和功能讨论。
  3. 与常用插件(如 FishNet、Lobby 系统)兼容。

3、典型应用场景

  • 多人联机游戏(PvP、PvE、合作模式)

  • 实时同步应用(如虚拟会议、协作工具)

  • 原型快速开发(无需从零实现网络逻辑)


4、基本使用示例

安装

通过 Unity Package Manager 或 GitHub 仓库导入 Mirror。

导入Mirror插件资源

设置 NetworkManager

// 创建 NetworkManager 对象并配置服务器地址、端口和玩家预制体。
public class MyNetworkManager : NetworkManager {
    public override void OnServerAddPlayer(NetworkConnection conn) {
        GameObject player = Instantiate(playerPrefab);
        NetworkServer.AddPlayerForConnection(conn, player);
    }
}

同步变量与 RPC

public class Player : NetworkBehaviour {
    [SyncVar]
    public int health = 100;

    [Command]
    public void CmdTakeDamage(int damage) {
        health -= damage;
    }

    [ClientRpc]
    public void RpcRespawn() {
        transform.position = Vector3.zero;
    }
}

5、优缺点对比

优点缺点
开源免费,社区支持强大需要自行处理复杂同步逻辑(如预测与插值)
学习曲线较低(相比底层 Socket)大型项目需优化网络流量
高度可定制化依赖 Unity 的更新兼容性

6、为什么选择 Mirror?

  • UNet 的继承者:Unity 已弃用 UNet,Mirror 是社区维护的最佳替代方案。

  • 轻量高效:相比 Photon 等第三方服务,Mirror 提供更多控制权且无额外成本。

  • 适合中小团队:快速实现多人功能,无需深厚网络编程经验。

7、常见问题

导入 Unity 资源包时遇到的错误提示 ​"This Asset Package has Unity Package Manager dependencies" 意味着该资源包依赖两个特定的 UPM(Unity Package Manager)包:com.unity.ugui@2.0.0 和 com.unity.nuget.newtonsoft-json@3.0.0


解决方法:

1️⃣ 检查 Unity 版本

  • 确保你使用的 Unity 版本与资源包兼容。
  • com.unity.ugui@2.0.0 通常对应 ​Unity 2020.3+,旧版本可能无法支持。

2️⃣ ​通过 Package Manager 安装依赖

  1. 打开 Unity Editor,进入顶部菜单:
    Window > Package Manager
  2. 在 Package Manager 窗口中:
    • 确保选择 ​Unity Registry​ 作为包源。
  3. 搜索并安装以下包:
    • ​**"Unity UI" (com.unity.ugui)**​
      • 确保版本为 2.0.0(可能需要升级 Unity)。
    • ​**"Newtonsoft Json" (com.unity.nuget.newtonsoft-json)**​
      • 安装 3.0.0 版本。

3️⃣ ​手动修改 manifest.json

如果包管理器中没有找到指定版本,可手动添加依赖:

  1. 打开项目目录:YourProject/Packages/manifest.json
  2. 在 dependencies 部分添加以下内容:
    {
      "dependencies": {
        "com.unity.ugui": "2.0.0",
        "com.unity.nuget.newtonsoft-json": "3.0.0",
        // 其他依赖...
      }
    }
  3. 保存文件,重启 Unity Editor。

4️⃣ ​验证依赖是否加载

  • 重启 Unity 后,检查 ​Package Manager​ 中是否已正确加载这两个包。
  • 如果出现版本冲突,尝试删除项目目录下的 Library 文件夹并重新导入资源包。

相关文章:

  • 【AI深度学习基础】NumPy完全指南入门篇:核心功能与工程实践(含完整代码)
  • 【大数据】ClickHouse常见的错误及解决方式
  • 数据库 复习
  • MySQL数据库的使用工具
  • python配置mmcv与mmdet环境
  • 游戏引擎学习第129天
  • 科目二技巧
  • 网络演进(演进到TCP协议)
  • UE Python笔记
  • MySQL当中的Lock
  • 网络安全红队工具
  • 算法之算法主题
  • 【六祎 - Note】SQL备忘录;DDL,DML,DQL,DCL
  • 步步为营:用 torch.arange 快速生成数字序列
  • 本地部署Embedding模型API服务的实战教程
  • 记录一个C语言打印的误区:无符号的数通过%d打印出现符号位的现象
  • 掌握 ElasticSearch 聚合查询:Aggregations 入门与实战
  • 毛泽东思想的历史地位
  • 计算机组成原理知识点精汇(一)计算机基础知识
  • SpringBoot 3.0微服务架构实战:从设计到部署
  • 企业网站设计注意事项/适合企业员工培训的课程
  • wordpress腾讯地图插件/青岛网络seo公司
  • 门户网站建设理由/百度今日数据统计
  • 化学试剂网站建设/杭州市优化服务
  • 电子商务网站建设源码/什么是网络销售
  • 政府网站建设项目背景/百度推广介绍