Unity插件-Mirror使用方法(二)组件介绍
目录
一、插件介绍
二、主要组件
1、核心管理组件
2、玩家与对象同步
3、数据同步与通信
4、生成与销毁控制
5、高级功能组件
6、安全与认证
7、实用工具脚本
8、协同工作流程示例
三、基础配置
1、创建 NetworkManager
2、发布测试
一、插件介绍
Unity插件-Mirror使用方法(一)Mirror介绍-CSDN博客
二、主要组件
1、核心管理组件
-
NetworkManager
- 功能:核心管理器,处理服务器/客户端连接、场景切换、玩家生成等全局逻辑。
- 关键设置:指定玩家预制体(Player Prefab)、最大玩家数、离线/在线场景配置。
-
NetworkManagerHUD
- 功能:内置的 UI 界面,提供快速调试按钮(启动服务器、客户端、主机模式)。
-
NetworkIdentity
- 功能:标记游戏对象为网络对象,赋予唯一网络标识(NetID)。所有需同步的对象必须挂载此组件。
2、玩家与对象同步
-
NetworkTransform
- 功能:自动同步游戏对象的位置、旋转和缩放。可配置同步频率和压缩方式。
-
NetworkAnimator
- 功能:同步动画状态机的参数(如布尔值、浮点数、触发器等)。
-
NetworkBehaviour
- 功能:自定义网络脚本的基类。通过重写方法(如
OnStartServer()
、OnStartClient()
)实现网络逻辑。
- 功能:自定义网络脚本的基类。通过重写方法(如
3、数据同步与通信
-
SyncVar
- 功能:变量同步属性。标记
[SyncVar]
的变量在服务器修改后自动同步到所有客户端。
- 功能:变量同步属性。标记
-
Command(
[Command]
)- 用法:客户端调用服务器端方法(需以
Cmd
开头)。例如:CmdShoot()
。
- 用法:客户端调用服务器端方法(需以
-
ClientRpc(
[ClientRpc]
)- 用法:服务器调用客户端方法(需以
Rpc
开头)。例如:RpcUpdateScore()
。
- 用法:服务器调用客户端方法(需以
-
TargetRpc(
[TargetRpc]
)- 功能:服务器向特定客户端发送指令(如私聊消息)。
4、生成与销毁控制
-
NetworkStartPosition
- 功能:标记玩家生成点,
NetworkManager
可随机或按顺序分配生成位置。
- 功能:标记玩家生成点,
-
NetworkDestroy
- 自动处理:带有
NetworkIdentity
的对象在服务器销毁时,会自动同步到客户端销毁。
- 自动处理:带有
5、高级功能组件
-
NetworkProximityChecker
- 功能:基于距离的可见性检测,仅同步在玩家视野范围内的对象。
-
NetworkRoomManager
- 功能:扩展的
NetworkManager
,提供房间系统功能(如大厅等待、玩家人数匹配)。
- 功能:扩展的
-
NetworkSceneChecker
- 作用:防止客户端加载未授权的场景,增强安全性。
-
NetworkDiscovery
- 用途:局域网广播服务器信息,便于客户端自动发现可用服务器。
6、安全与认证
-
NetworkAuthenticator
- 功能:实现自定义认证逻辑(如账号密码验证、令牌校验)。
-
TelepathyTransport
- 特点:Mirror 默认的传输层组件,支持加密通信(如 WebSocket Secure)。
7、实用工具脚本
- NetworkLogger:记录网络事件日志,用于调试连接问题。
- NetworkStatisticGUI:显示实时网络数据(如流量、延迟)。
8、协同工作流程示例
- 玩家加入:
NetworkManager
生成玩家预制体(带NetworkIdentity
)。NetworkTransform
同步玩家移动,NetworkAnimator
同步动画。
- 交互逻辑:
- 客户端调用
CmdFire
命令,服务器验证后通过RpcSpawnBullet
在所有客户端生成子弹。
- 客户端调用
三、基础配置
1、创建 NetworkManager
新建空物体,命名为 NetworkManager
。
添加组件NetworkManager、NetworkManagerHUD(调试界面)和KCP Transport。
在 NetworkManager
中设置:
- Player Prefab:玩家角色预制体(必须包含
NetworkIdentity
组件)。
- Online/Offline Scene:连接成功/断开时加载的场景。
2、发布测试
在编辑器中运行一个相同场景,点击左上角Host(Server+Client)开启服务器加客户端。
将当前场景Build And Run,点击左上角HUD面板选择Client开启客户端。
可以看到生成了两个玩家预制体,连接成功