LibGDX, Screen 和 Stage 中的代码应该如何组织?
LibGDX, How should I organize code inside Screen and Stage?
简短版:请 link 给我一个 libgdx 游戏的组织代码 box2d 或者告诉我哪些成员进入了什么 classes
长版本:我有一个 GameScreen,里面有 GameStage 对象。然而,当我开发我的游戏时,我看到 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:这是我的 class 结构:http://i.stack.imgur.com/8uYgA.png
我也在制作 Box2D 游戏,组织是我最关心的问题。在游戏中,您需要管理很多事情。摄像机、游戏逻辑、移动实体等。为了让它们一起工作,我已经开始使用我称之为处理程序的东西。这些处理程序将处理游戏的特定方面。这让我可以让相机代码远离 Box2D 代码。
对于我现在正在进行的项目,我的 "Universe" class:
中有五个处理程序
public WorldHandler world_handler;
public MapCameraHandler map_camera_handler;
public EntityHandler entity_handler;
public LevelHandler level_handler;
public WaveHandler wave_handler;
当我初始化它们中的每一个时,我将对此 Universe class 的引用传递给它们的构造函数,以便处理程序可以相互通信。然后,在我的更新步骤中,我分别调用每个处理程序的更新。
public void update(float delta)
{
world_handler.update(delta);
entity_handler.update(delta);
map_camera_handler.setCameraBounds();
wave_handler.update();
}
绘制方法我也是这样做的
public void draw()
{
map_camera_handler.map_renderer.setView(map_camera_handler);
map_camera_handler.map_renderer.render();
entity_handler.draw();
}
简短版:请 link 给我一个 libgdx 游戏的组织代码 box2d 或者告诉我哪些成员进入了什么 classes
长版本:我有一个 GameScreen,里面有 GameStage 对象。然而,当我开发我的游戏时,我看到 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:这是我的 class 结构:http://i.stack.imgur.com/8uYgA.png
我也在制作 Box2D 游戏,组织是我最关心的问题。在游戏中,您需要管理很多事情。摄像机、游戏逻辑、移动实体等。为了让它们一起工作,我已经开始使用我称之为处理程序的东西。这些处理程序将处理游戏的特定方面。这让我可以让相机代码远离 Box2D 代码。
对于我现在正在进行的项目,我的 "Universe" class:
中有五个处理程序public WorldHandler world_handler;
public MapCameraHandler map_camera_handler;
public EntityHandler entity_handler;
public LevelHandler level_handler;
public WaveHandler wave_handler;
当我初始化它们中的每一个时,我将对此 Universe class 的引用传递给它们的构造函数,以便处理程序可以相互通信。然后,在我的更新步骤中,我分别调用每个处理程序的更新。
public void update(float delta)
{
world_handler.update(delta);
entity_handler.update(delta);
map_camera_handler.setCameraBounds();
wave_handler.update();
}
绘制方法我也是这样做的
public void draw()
{
map_camera_handler.map_renderer.setView(map_camera_handler);
map_camera_handler.map_renderer.render();
entity_handler.draw();
}