unity network_error ai_generated true

无效操作异常:无法将不可靠消息入队。不可靠消息队列已满。

InvalidOperationException: Cannot enqueue unreliable message. The unreliable message queue is full.

ID: unity/network-unreliable-message-queue-full

其他格式: JSON · Markdown 中文 · English
80%修复率
85%置信度
1证据数
2024-02-05首次发现

版本兼容性

版本状态引入弃用备注
Unity 2022.3.15f1 active
Unity 2023.2.0b5 active
Netcode for GameObjects 1.6.0 active

根因分析

网络传输层的不可靠消息队列已达到容量上限,通常是由于发送了过多不可靠消息而未处理,或网络缓冲区泄漏。

English

The network transport layer's unreliable message queue has reached its capacity, typically due to sending too many unreliable messages without processing or a network buffer leak.

generic

官方文档

https://docs.unity3d.com/Packages/[email protected]/manual/index.html

解决方案

  1. 通过实现发送速率限制器来降低不可靠消息的频率。例如,在脚本中使用计时器,每秒最多发送 10 条消息:`if (Time.time - lastSendTime > 0.1f) { SendUnreliableMessage(); lastSendTime = Time.time; }`。
  2. 在网络传输配置中增加不可靠消息队列大小(例如在 Unity Transport 中,将 `maxUnreliableQueueSize` 设置为更高的值,如 1024)。
  3. 监控并记录传出消息数量,以识别并修复在 Update() 中无意发送消息的脚本。

无效尝试

常见但无效的做法:

  1. 70% 失败

    Increasing the queue size without addressing the root cause (e.g., message spam) may only delay the error and cause memory issues.

  2. 90% 失败

    Restarting the game client clears the queue temporarily but does not fix the underlying excessive message generation.