我是 Json 和 libGDX 的新手,但我创建了一个简单的游戏,我想将玩家姓名和他们的分数存储在 Json 文件中。有没有办法做到这一点?我想在 Gdx.files.localStorage
中创建一个 Json 文件(如果它不存在),如果存在,则向其追加新数据。
我已经检查了在 :
给出的代码1> Using Json.Serializable to parse Json files
但我没能找到如何实际创建 Json 文件并将多个唯一对象值(每个玩家的姓名和分数)写入其中。我是否从他们的代码中遗漏了什么?
这link提到了如何加载现有的 json,但没有提到其他内容。
最佳答案
首先我不得不说我从未使用过 Libgdx Json
API我。但我会尽力帮助你。
我觉得这个Tutorial在 github 上应该能帮到你一些。
基本上,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}
您可以使用 prettyPrint()
代替 toJson()
,它包括换行符和制表符。
要将其写入文件,请使用:
FileHandle file = Gdx.files.local("scores.json");
file.writeString(score, true); // True means append, false means overwrite.
您还可以通过实现 Json.Serializable
或使用 writeValue
手动添加值来自定义您的 Json
。
阅读类似:
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
是 File
的 String
。现在您可以循环遍历此 JsonValue
的子项或按名称获取其子项。
最后一件事:对于高分或类似的东西,可能是 Libgdx Preferences
是更好的选择。 Here您可以阅读如何使用它们。
希望我能帮上忙。
关于java - 使用 libGDX 写入 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22802572/