英文原文:
https://mirror-networking.gitbook.io/docs/components/network-profiler
Mirror Profiler 是 Mirror Pro 套装的一部分。在撰写本文时,我们的 GitHub 赞助商可以访问它。
Installation
- 确保您拥有最新版本的 Mirror。
- 如果您还没有,请成为 GitHub 赞助商。
- 访问 Mirror Networking Discord。在信息频道中,您将学习如何加入 github_sponsors 频道。
- 在 github_sponsors 频道中,固定消息将指导您如何下载分析器。
- 在您的项目中安装unity package。
用法
- 在 Unity 菜单中,单击打开Window -> Analysis -> Mirror Network Profiler。探查器视图将出现
- 您可以将探查器停靠在您想要的任何位置
- 在编辑器中开始你的游戏
- 在分析器中按“Record”
- 作为主机、客户端或服务器开始您的游戏
- 在顶部的图表将显示传入和传出的消息
- 单击图表以选择帧
- 分析器将显示有关该帧中发送和接收的所有消息的信息
目前,消息显示以下字段:
- In/Out:消息是被接收(in)还是发送(out)
- Name:消息的短名称,如果消息是 [Command]、[ClientRpc]、[TargetRpc] 或 [TargetEvent],则显示方法的名称,否则显示消息类的名称。
- Bytes:消息的大小(以字节为单位)
- Count:在输出消息的情况下,这将包含消息发送到的客户端数量。
- Total Bytes:消息大小乘以消息发送到的客户端数量(字节 * 计数)
- Channel:用于发送消息的频道。在撰写本文时,我们无法确定入站消息的通道,因此它显示为 -1。这将在未来的版本中得到改进。传输可以将通道用于多种用途,例如可靠、不可靠、加密、压缩等。
优化带宽
在大多数传输中,总带宽由 Count 列控制。这是因为每条消息都打包在 TCP 或 UDP 帧中,它们具有较大的包头。
- 如果您在同一帧中发送多个 [Command],如果有意义,请考虑将它们合并为单个 [Command] 调用
- 如果您在特定消息上看到较大的 Count 数字,请考虑将 NetworkProximityChecker 添加到您的对象,以便它仅对附近的玩家而不是整个世界可见。根据您的游戏,这可以显着减少计数(和总字节数)。
- 如果您每帧都发送一条消息,请考虑更改您的逻辑,以便仅在情况发生变化时发送消息,或者使用计时器。
- 考虑使用 SyncToOwner 功能,以便在私人信息(例如库存)发生变化时只有所有者才能收到消息。这可以根据您的游戏显着减少计数。
- 如果您有很多同步数据的 [ClientRpc] 调用,请考虑改用 [SyncVar] 和同步列表。它们可以减少消息的数量,因为它们仅在更改时发送增量,而且它们被批处理在一起,因此数百个变量可以与单个消息同步。