游戏在加载JSON级别时有一个初始混蛋-LibGdx



我的游戏中大约有 25 个关卡,每个关卡都会在前一个关卡完成后自动加载。 当我点击播放按钮开始游戏时,游戏屏幕被 JSON 加载障碍物。但是当游戏刚刚开始玩时,最初会发生混蛋。

这是我的类,我正在为级别进行 JSON 解析:

public class ObstacleFactory {
public static Array<Obstacle> obstacles1 = new Array<Obstacle>();
public static Array<String> names = new Array<String>();
public ObstacleFactory() {
}
public static void loadJsonLevels(String fileName) {
JsonValue jsonValue = new JsonReader().parse(Gdx.files.internal(fileName));
JsonValue nameValue = jsonValue.get("obstacles");
for (JsonValue value : nameValue.iterator()) {
System.out.println(nameValue);
if (value.getString("name").equals("rock")) {
obstacles1.add(new Obstacle());
obstacles1.get(obstacles1.size - 1).setName(value.getString("name"));
obstacles1.get(obstacles1.size - 1).setDistance(value.getFloat("distance"));
obstacles1.get(obstacles1.size - 1).setPos(value.getString("position"));
obstacles1.get(obstacles1.size - 1).setSpeed(value.getFloat("speed"));
if (value.getString("position").equals("middle"))
obstacles1.get(obstacles1.size - 1).setPosition(value.getFloat("distance"), Constants.BIG_ROCK_Y);
obstacles1.get(obstacles1.size - 1).setSize(Constants.ROCK_WIDTH, Constants.ROCK_HEIGHT);
names.add(value.getString("name"));
}
if (value.getString("name").equals("gorilla")) {
obstacles1.add(new Obstacle());
obstacles1.get(obstacles1.size - 1).setName(value.getString("name"));
obstacles1.get(obstacles1.size - 1).setDistance(value.getFloat("distance"));
obstacles1.get(obstacles1.size - 1).setPos(value.getString("position"));
obstacles1.get(obstacles1.size - 1).setSpeed(value.getFloat("speed"));
if (value.getString("position").equals("middle"))
obstacles1.get(obstacles1.size - 1).setPosition(value.getFloat("distance"), Constants.GORILLA_Y);
obstacles1.get(obstacles1.size - 1).setSize(Constants.GORILLA_WIDTH, Constants.GORILLA_HEIGHT);
names.add(value.getString("name"));
}
//   ------------other obstacles
//  -------------other obstacles
names.add(value.getString("name"));
}
}
}
}

这个加载JsonLevels((我在GameScreen类中调用(我正在编写所有游戏逻辑,并为来自JSON和其他游戏对象的障碍物加载纹理。构造函数如下:

ObstacleFactory.loadJsonLevels("levels/level1.json");
ObstacleFactory.loadJsonLevels("levels/level2.json");

每次我启动或重新启动游戏时,这个混蛋都在那里,应该删除,因为它很烦人。

此问题的可能原因是什么?

我发布了与json解析和关卡加载相关的代码,因为当我调用这个loadJsonLevel((时会发生这种混蛋。如果我评论它,混蛋不存在。

我希望我能够得到一些有用的建议来克服这个问题。

提前谢谢。

您可能在数据完全加载之前开始显示屏幕。

打开、读取和写入文件或网络是一项非常昂贵的操作(或者可能是,尤其是在资源不足的设备上(。 您不想在主显示线程中执行此操作,也不想在绘制屏幕时执行此操作。 该过场动画或其他东西的充分理由让用户等待几秒钟。

相关内容

最新更新