目录
一、插件介绍
二、主要组件
Network Manager
三、Network Manager HUD
1、组件介绍
2、NetworkManagerHUD 的核心功能
快速操作按钮
状态信息显示
场景切换支持
调试辅助
3、关键属性与配置
4、HUD 界面详解
【主机模式(服务器+客户端)】
注意事项:
【客户端模式】
连接互联网主机时:
多实例测试技巧:
多设备测试须知:
连接流程:
【纯服务器模式】
点击此按钮将启动专用服务器:
优势说明:
部署建议:
5、基本使用示例
步骤1:启用 HUD
步骤2:测试连接
步骤3:观察状态
6、自定义 HUD 界面
示例:简化版 HUD
高级自定义
7、适用场景
8、注意事项
生产环境禁用
与 NetworkManager 的协作
布局适配
9、常见问题与解决
一、插件介绍
Unity插件-Mirror使用方法(一)Mirror介绍-CSDN博客
二、主要组件
Unity插件-Mirror使用方法(二)组件介绍-CSDN博客
Network Manager
Unity插件-Mirror使用方法(三)组件介绍(Network Manager)-CSDN博客
三、Network Manager HUD
1、组件介绍
在 Unity Mirror 中,NetworkManagerHUD 是一个内置的调试界面组件,专门用于快速测试和可视化网络功能。它为开发者提供了一个简单的图形用户界面(GUI),无需编写额外代码即可实现服务器/客户端的启动、连接和基础操作,非常适合原型开发和快速调试。
网络管理器HUD(“抬头显示”)是一个快速启动工具,可帮助您立即开始构建多人游戏,而无需先为游戏创建/连接/加入构建用户界面。它允许您直接进入游戏玩法编程阶段,意味着您可以在开发计划后期构建自己的版本控件。
但请注意,该HUD不适合包含在最终发布的游戏中。其设计初衷是帮助开发者快速入门,您应该在后续开发中创建自己的UI界面,让玩家以符合游戏风格的方式进行游戏查找和加入。例如,您可能希望定制屏幕设计、按钮样式和可用游戏列表,以匹配游戏的整体视觉风格。
要开始使用网络管理器HUD,您可以选择以下两种方式之一:
- 将HUD组件添加到已包含网络管理器组件的场景对象上
- 在场景中创建空游戏对象(菜单:GameObject > Create Empty),然后向新对象添加网络管理器HUD组件
2、NetworkManagerHUD 的核心功能
快速操作按钮
提供直观的按钮,支持以下功能:
- 启动 LAN Host(同时作为服务器和客户端)。
- 启动 LAN Server(仅作为服务器)。
- 启动 LAN Client(连接到本地服务器)。
- 输入 IP 地址连接远程服务器。
- 停止服务器/客户端,断开连接。
状态信息显示
- 实时显示当前网络模式(服务器、客户端、未连接)。
- 显示连接状态(如
Connected
、Disconnected
)。 - 显示当前场景名称。
场景切换支持
- 通过界面按钮切换场景(需配合
NetworkManager
的Online Scene
和Offline Scene
配置)。
调试辅助
- 在 Editor 和 Standalone 构建中均可使用。
- 支持快速测试多人交互逻辑(如玩家生成、同步验证)。
3、关键属性与配置
在 Unity Inspector 面板中,NetworkManagerHUD 的主要配置如下:
属性 | 说明 |
---|---|
Show GUI | 是否显示 HUD 界面(开发阶段建议开启,发布时可禁用)。 |
Offset X | 设置HUD界面距离屏幕左边缘的水平像素偏移 |
Offset Y | 设置HUD界面距离屏幕上边缘的垂直像素偏移 |
4、HUD 界面详解
默认界面包含以下元素(根据网络状态动态变化):
默认状态下,HUD处于"服务器+客户端"模式,提供以下功能按钮:
【主机模式(服务器+客户端)】
点击此按钮将在本地网络以主机身份启动游戏。该客户端兼具服务器和玩家双重身份,使用检查器中网络信息部分的配置进行托管。
成功启动后,HUD将切换至网络详情显示界面,并提供【停止】按钮用于终止托管并返回主菜单。
注意事项:
- 作为主机启动游戏后,其他玩家可连接至该主机加入游戏
- 点击【停止】按钮将断开与主机的连接并返回主菜单
【客户端模式】
连接互联网主机时:
- 在客户端按钮右侧的文本框中输入主机地址(默认"localhost"指向本机)
- 支持输入IPv4/IPv6地址或完整域名(如game.example.com),传输层将通过DNS解析域名
- 点击【客户端】按钮尝试连接指定地址
多实例测试技巧:
- 在同一计算机上运行多个游戏实例时,使用默认"localhost"地址测试多人交互
- 建议创建独立构建版本并在本机多次启动,这是快速验证网络交互功能的常用方法
多设备测试须知:
- 主机计算机需告知客户端其IP地址:
- 局域网客户端使用本地IP
- 远程客户端需要主机路由器的公网IP
- 需配置防火墙规则和端口转发以接受连接(无论来自局域网或互联网)
连接流程:
- 输入目标IP(本机测试可保留"localhost")
- 点击【客户端】启动连接
- 连接尝试期间显示【取消连接】按钮
- 成功连接后显示【停止】按钮,用于终止客户端游戏进程
【纯服务器模式】
点击此按钮将启动专用服务器:
- 仅作为连接节点,不参与实际游戏
- 所有玩家必须通过客户端连接
- 该模式通常称为"专用服务器"
优势说明:
- 提升所有连接玩家的性能表现(服务器无需处理本地玩家逻辑)
- 适用于需要完全掌控服务器的场景(如反作弊),因为游戏权威仅在服务端
部署建议:
- 在具有公网IP的计算机上以纯服务器模式运行
- 适合需要提供互联网游戏服务(而不仅限局域网)且需保持服务器控制权的场景
5、基本使用示例
步骤1:启用 HUD
-
在场景中创建一个空对象(如
NetworkManager
)。 -
添加
NetworkManager
组件,并配置基础参数(如 Player Prefab、端口号)。 -
在同一对象上添加
NetworkManagerHUD
组件。 -
确保 Show GUI 属性为
true
。
步骤2:测试连接
-
本地测试:点击
LAN Host
启动本地服务器并自动加入为玩家。 -
远程连接:输入目标 IP 地址,点击
Remote Client
连接。
步骤3:观察状态
-
在游戏运行时,HUD 会显示当前网络状态和操作按钮:
6、自定义 HUD 界面
虽然默认界面适合快速测试,但可通过继承 NetworkManagerHUD
并重写 OnGUI()
方法实现自定义界面:
示例:简化版 HUD
using UnityEngine;
using Mirror;public class CustomNetworkHUD : NetworkManagerHUD
{public override void OnGUI(){// 仅在未连接时显示自定义按钮if (!NetworkClient.isConnected && !NetworkServer.active){GUILayout.BeginArea(new Rect(10, 10, 200, 100));if (GUILayout.Button("Start LAN Host")){manager.StartHost();}if (GUILayout.Button("Join LAN Client")){manager.StartClient();}GUILayout.EndArea();}}
}
高级自定义
- 修改按钮样式、布局或添加额外信息(如玩家数量、延迟显示)。
- 结合
NetworkManager
的回调事件(如OnClientConnect
)动态更新界面。
7、适用场景
- 快速原型开发:无需编写 UI 代码即可测试多人功能。
- 调试网络问题:实时观察连接状态和操作反馈。
- 演示与分享:方便非技术人员操作(如测试人员启动服务器/客户端)。
8、注意事项
生产环境禁用
- 正式发布时应禁用 HUD(取消勾选 Show GUI 或移除组件)。
- 用自定义 UI 替代(如主菜单的“创建房间”/“加入房间”按钮)。
与 NetworkManager 的协作
- HUD 依赖场景中的
NetworkManager
实例,确保二者在同一对象或手动关联。
布局适配
- 默认 HUD 位置可能在屏幕左上角,可通过 Offset X/Y 调整。
- 在高分辨率下可能需要缩放 UI(通过修改
GUI.skin
或使用 UGUI 替代)。
9、常见问题与解决
问题 | 解决方法 |
---|---|
HUD 界面未显示 | 检查 Show GUI 是否启用,且场景中有 NetworkManager 组件。 |
点击按钮无反应 | 确认 NetworkManager 配置正确(如 Player Prefab 已赋值)。 |
自定义 HUD 覆盖默认逻辑 | 继承 NetworkManagerHUD 时,避免直接修改基类方法,优先调用 base.OnGUI() 。 |
HUD 在 WebGL 中失效 | WebGL 需使用 WebSocket 传输层,检查 NetworkManager 的传输协议配置。 |