当前位置: 代码迷 >> java >> LibGDX,我应该如何在Screen和Stage中组织代码?
  详细解决方案

LibGDX,我应该如何在Screen和Stage中组织代码?

热度:130   发布时间:2023-08-02 10:29:43.0

短版:请联系我的libgdx游戏的orginized代码的Box2D或只是告诉我一下班何去何从成员

长版:我有一个带有GameStage对象的GameScreen。 但是,在开发游戏时,我看到GameStage有很多代码,而GameScreen几乎是空的。 最初,我将摄像机和视口放入GameScreen内 ,仅此而已。

private Jumper              game;
private GameStage           stage;
private OrthographicCamera  camera;
private FitViewport         viewport;

以下是我GameStage内部的成员:

public  World               world;
private Ground              ground;
private Player              player;
private float               accumulator = 0f;
private Vector3             touch = new Vector3();
private Rectangle           rightSide;
private Rectangle           leftSide;
private Queue<Platform>     platforms;
private int                 score;
private OrthographicCamera  camera;
private Box2DDebugRenderer  debugRenderer;
private FitViewport         viewport;

这对我的atm来说还算不错,但是我只是处于原型构建阶段,因此需要添加更多的机制,我敢肯定它会像我之前的游戏(50多个成员)那样结束并拥有太多的代码,我每次都会迷失其中

一个游戏拥有太多代码是正常的吗? 还是有一种优化方法?

PS:这是我的课程结构: :

我也正在制作Box2D游戏,而组织是我的一个大问题。 在游戏中,您需要管理很多事情。 摄影机,游戏逻辑,移动实体等。为了使所有这些协同工作,我开始使用所谓的处理程序。 这些处理程序将处理游戏的特定方面。 这使我可以使相机代码远离Box2D代码。

对于我现在正在从事的项目,我的“ Universe”类中有五个处理程序:

public WorldHandler world_handler;
public MapCameraHandler map_camera_handler;
public EntityHandler entity_handler;
public LevelHandler level_handler;
public WaveHandler wave_handler;

当我初始化它们时,我将对该Universe类的引用传递给它们的构造函数,以便处理程序可以相互通信。 然后,在更新步骤中,我分别调用每个处理程序的更新。

public void update(float delta)
{
    world_handler.update(delta);
    entity_handler.update(delta);
    map_camera_handler.setCameraBounds();
    wave_handler.update();
}

我对draw方法也一样。

public void draw()
{
    map_camera_handler.map_renderer.setView(map_camera_handler);
    map_camera_handler.map_renderer.render();       
    entity_handler.draw();
}
  相关解决方案