我想为我的塔防游戏从json文件中加载关卡,我尝试了很多json生成器网站,但是我不能得到我想要的东西。
我想要像这样的东西;
--级别
-Wave
-Enemy (enemyType,spawnTime)
例如:level2.wav3.enemy1.enemyType应该返回enemyType。
水平是由浪组成的,浪是由敌人组成的。所有敌人都有2个变量,分别是enemyType和spawnTime。
发布于 2014-07-17 22:52:02
这并不是一项艰巨的任务。但是,JSON不会处理抽象类/接口的实现。也就是说,
Enemy e = new Skeleton();不能使用JSON序列化,然后再读取。您必须采取一种变通办法,比如保存类名的字符串,然后通过下面这样的方式加载它
Class clazz = Class.forName("com.my.cool.package.enemy." + "Skeleton");
Enemy e = (Enemy) clazz
.getConstructor(Vector2.class, int.class)
.newInstance(new Vector2(0, 10), 5);好的,回到主要问题,像这样做:
class Enemy {
String className;
int spawnTime;
}
class Wave {
Enemy[] enemies;
}
class Level {
Wave[] waves;
}然后创建你的关卡:
Level l = new Level();
l.waves = new Wave[1];
l.waves[0].enemies = new Enemies[1];
l.waves[0].enemies[0] = new Enemy();
l.waves[0].enemies[0].className = "Skeleton";
l.waves[0].enemies[0].spawnTime = 5;别忘了导入libgdx JSON (有关wiki的更多信息)。
Json json = new Json();
System.out.println(json.prettyPrint(l));这应该会打印出您的级别,只需使用json.toJson(l)即可获得较小的输出。(但不是那么漂亮。)要加载它,请使用:
Json json = new Json();
String text = json.prettyPrint(l);
Level level = json.fromJson(Level.class, text);https://stackoverflow.com/questions/24590329
复制相似问题