unity3d Unity未报告通过事件调用的自定义类的错误

pcww981p  于 2023-03-03  发布在  其他
关注(0)|答案(1)|浏览(122)

我正在建立网络,在这样做的过程中,有一个基本的事件系统来允许类对接收到的数据包进行操作。在接收到客户端信息的数据包(服务器端)时,我试图发送回一个包含游戏状态的Object
我可以在我的所有代码中完全正确地执行Debug.Log,但是在下面的函数中,在Debug.Log("Sending Game State");行之后,没有进一步的代码执行。

public static void SendGameState(int connectionID, Color[,] gameState) { // Change to a proper game state
        Debug.Log("Sending Game state");
        ByteBuffer buffer = new ByteBuffer(4);
        buffer.WriteInt32((int)ServerPackets.SGameState);
        buffer.WriteObject(gameState);

        Debug.Log("Sending Game state");
        NetworkConfig.socket.SendDataTo(connectionID, buffer.Data, buffer.Head);

        buffer.Dispose();
    }

我不关心是什么导致了错误,我只关心如何让Unity报告它。显然,我可以手动捕捉错误,但为了保存时间,我希望它像Unity通常做的那样自动完成
我也意识到这个问题可能需要更多的细节来回答,但我不知道从哪里开始,也不知道为什么Unity突然停止只报告这段代码的错误(其他一切都报告为正常)。

hsvhsicv

hsvhsicv1#

您可以尝试UnhandledExceptionHandler。也许这会记录它。
至于代码,你说的是“日志发送游戏状态之后的代码”,但是有两个。假设你指的是第一个,我可以看到你试图分配一个4字节的字节缓冲区。然后你调用一个WriteInt32(4字节),然后继续写入更多。这看起来像是缓冲区溢出,这很奇怪,因为ByteBuffer似乎暗示了FlatBuffers,我假设它们至少执行缓冲区溢出检查,但我不能确定。unityfork的flatbuffers从cpp生成了lib,这是关键。无法验证。

相关问题