Min*_*con 6 java multithreading libgdx
嘿伙计们我正在用libGDX制作游戏,我真的想要对游戏进行操作,所以我在不同的线程上运行一个绘制循环和一个逻辑循环,就像你用paintcomponent循环和runnable创建一个简单的java swing游戏一样运行循环
我对c中的线程很有经验,但在java中没有那么多我能够创建线程的唯一方法是创建一个扩展线程然后在那里创建运行循环的类
但是制作运行循环的关键是允许每个屏幕自由地计算逻辑,所以我最终需要某种具有自定义线程类的抽象类
我问是否有更简单或更标准的方法来实现这种情况的线程
P.T*_*.T. 12
libGDX库已经为OpenGL上下文更新运行了一个单独的渲染线程.请参阅http://code.google.com/p/libgdx/wiki/TheArchitecture#The_Graphics_Module
我们已经了解到UI线程不是连续执行的,而是仅在需要调度事件时调度为由操作系统运行(大致为:p).这就是为什么我们实例化我们通常称为渲染线程的第二个线程.此线程由Graphics模块创建,该模块本身在启动时由Application实例化.
ApplicationListener.render()对于每个屏幕刷新,此渲染线程将调用主游戏对象上的方法(因此它应该是大约60hz),因此只需将渲染循环的主体放在此方法的实现中.
您可以在您的方法中创建一个额外的后台线程(例如,用于游戏逻辑)(确保在create方法中ApplicationListener清理它dispose).除了render线程之外,我认为任何预先存在的线程都不是游戏逻辑的正确位置.
对于线程之间的通信,您可以使用任何现有的Java同步方法.我使用Java ArrayBlockingQueue<>来向后台线程发送请求.而且我已经习惯Gdx.app.postRunnable()了将后台线程推送到渲染线程(这样的Runnables在下一帧运行,之前render()被调用).
| 归档时间: |
|
| 查看次数: |
11379 次 |
| 最近记录: |