gpt4 book ai didi

java - LibGDX,我应该如何在屏幕和舞台内组织代码?

转载 作者:行者123 更新时间:2023-12-01 11:18:47 27 4
gpt4 key购买 nike

简短版本:请将我链接到带有 box2d 的 libgdx 游戏的组织代码,或者只是告诉我哪些成员属于哪些类别

长版本:我有一个 GameScreen,里面有 GameStage 对象。然而,当我开发游戏时,我发现 GameStage 有很多代码,而 GameScreen 几乎是空的。最初我将相机和视口(viewport)放在 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;

这对我来说并不是那么糟糕,但是我只是在原型(prototype)构建中,还有更多的机制需要添加,我确信它最终会像我之前的游戏(50+ 成员)一样,而且代码太多,每次我都会迷失其中

一个游戏有这么多代码正常吗?或者有没有办法优化这个?

PS:这是我的类(class)结构:/image/8uYgA.png

最佳答案

我也在制作 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();
}

关于java - LibGDX,我应该如何在屏幕和舞台内组织代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31496111/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com