我是Json和libGDX的新手,但我创建了一个简单的游戏,我想将玩家名称及其分数存储在Json文件中。有没有办法做到这一点?我想在Gdx.files.localStorage
中创建一个Json文件,如果它不存在,如果不存在,则向其添加新数据。
我检查了以下代码:
1> Using Json.Serializable to parse Json files
但我找不到如何实际创建一个Json文件并将多个唯一对象值(每个玩家的名称和分数)写入其中。我错过了他们的代码吗?
这个link提到了如何加载现有的json而不是其他内容。
答案 0 :(得分:5)
首先,我必须说我自己从未使用过Libgdx Json
API。但我试着帮助你一点。
我认为github上的这个Tutorial应该可以帮到你一点点
基本上,Json
API允许您将整个对象写入Json
对象,然后将其解析为String
。要做到这一点:
PlayerScore score = new PlayerScore("Player1", 1537443); // The Highscore of the Player1
Json json = new Json();
String score = json.toJson(score);
这应该是这样的:
{name: Player1, score: 1537443}
您可以使用toJson()
而不是prettyPrint()
,其中包括换行符和标签。
将此内容写入文件使用:
FileHandle file = Gdx.files.local("scores.json");
file.writeString(score, true); // True means append, false means overwrite.
您还可以通过实施Json
或手动添加值Json.Serializable
来自定义writeValue
。
阅读类似:
FileHandle file = Gdx.files.local("scores.json");
String scores = file.readString();
Json json = new Json();
PlayerScore score = json.fromJson(PlayerScore.class, scores);
如果您通过实施Json.Serializable
使用自定义版本,那么您已实施read (Json json, JsonValue jsonMap)
方法。如果您正确实现了它,那么反序列化应该可行。如果您一直手动添加值,则需要创建JsonValue
jsonFile = new JsonValue(scores)
。 scores
是String
的{{1}}。现在,您可以循环查看此File
的子项,或者按名称获取其子项。
最后一件事:对于高分或类似事情,Libgdx Preferences
可能是更好的选择。 Here您可以阅读如何使用它们。
希望我能提供帮助。