我的游戏中有大约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"));
}
}
}
}
这个loadJsonLevels()我在GameScreen类中调用(我在这里编写所有的gamelogic,并为JSON和其他游戏对象的障碍物加载纹理。)这样的构造函数:
ObstacleFactory.loadJsonLevels("levels/level1.json");
ObstacleFactory.loadJsonLevels("levels/level2.json");
每次我开始或重新开始游戏时,这个混蛋就在那里,应该被移除,因为它很烦人。
这个问题的可能原因是什么?
我发布了与json解析和级别加载相关的代码,因为当我调用这个loadJsonLevel()时会发生这种混蛋。如果我发表评论,那么jerk就不存在了。
我希望我能够得到一些有用的建议来解决这个问题。
提前致谢。
答案 0 :(得分:0)
您可能在数据完全加载之前开始显示屏幕。
打开,读取和写入文件或网络是一项非常昂贵的操作(或者可能是,特别是在低资源设备上)。 您不希望在主显示主题中执行此操作,并且在绘制屏幕时您不想这样做。 切割场景或其他东西的充分理由让用户等待几秒钟。