简短版本:请使用 box2d 将我链接到libgdx游戏的orginized代码,或者只是告诉我哪些成员参加哪些课程
长版本:我有一个带有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;
这对我来说并不是那么糟糕,但是我只是在原型构建中并且还有更多的机制需要添加,我相信它最终会像我之前的游戏一样(50多个成员) ,并且拥有如此多的代码,我每次都会迷失它
游戏拥有如此多的代码是否正常?或者有没有办法优化这个?
PS:这是我的班级结构:http://i.stack.imgur.com/8uYgA.png
答案 0 :(得分:1)
我正在制作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();
}
我对绘制方法也这样做。
public void draw()
{
map_camera_handler.map_renderer.setView(map_camera_handler);
map_camera_handler.map_renderer.render();
entity_handler.draw();
}