Java:LibGDX-AppHangB1错误

Java:LibGDX-AppHangB1错误,java,libgdx,box2d,Java,Libgdx,Box2d,我正在使用Java-LibGDX框架开发一个游戏,Box2D物理引擎。当我玩游戏的时候,我发现这个错误,游戏崩溃了。什么会导致此错误 应用程序处于挂起状态,如果处于活动状态,则不会响应windows查询。通常这是由占用所有cpu的很长的循环引起的。如果您使用线程,请在处理内容之间给线程一些停顿 使run函数调用经常返回,以便留出足够的空间来处理其他应用程序调用 另外,如果您还没有这样做,请将处理和渲染线程分开 监控您的游戏滴答声,看看是什么导致了开销 尽量限制你的比赛节奏。每秒20-30次游戏滴

我正在使用Java-LibGDX框架开发一个游戏,Box2D物理引擎。当我玩游戏的时候,我发现这个错误,游戏崩溃了。什么会导致此错误


应用程序处于挂起状态,如果处于活动状态,则不会响应windows查询。通常这是由占用所有cpu的很长的循环引起的。如果您使用线程,请在处理内容之间给线程一些停顿

使run函数调用经常返回,以便留出足够的空间来处理其他应用程序调用

另外,如果您还没有这样做,请将处理和渲染线程分开

监控您的游戏滴答声,看看是什么导致了开销

尽量限制你的比赛节奏。每秒20-30次游戏滴答声通常足以更新游戏


如果没有任何代码或堆栈跟踪,就很难判断出哪里出了问题。

例如,它可以来自无限循环?一个游戏根据定义是无限循环。它一直运行到循环结束。重要的部分是将gameloop和渲染线程分开。游戏循环应该计算怪物,玩家每秒更新20-30次。Render yhread应该只读取变量,而不计算它们。渲染线程不能计算运行状况或命中框。主gui/窗口事件处理程序应位于主线程中。主线程应该启动游戏、网络和渲染线程。这样,主应用程序线程可以处理操作系统查询。总是很乐意提供帮助。只需注意线程同步。为网络线程使用数据包,这些数据包可以简单地传递,只从中读取数据,但在发送数据后不写入。渲染线程只能读取,不能写入。主游戏线程接收输入和网络数据包,并处理这些数据。你的主游戏循环应该在滴答声计算完成后暂停。给垃圾收集器清理的时间。例如,如果你像mc一样每秒做20次滴答声,一次滴答声最好能在10毫秒内完成,而不是在50毫秒内完成