LibGDX JSON对象保存/序列化

时间:2014-05-10 23:19:14

标签: java android json file libgdx

我一直在互联网上搜索如何在libgdx中使用JSON,特别是加载和保存对象,但我能找到的只是处理1个对象的教程。在我的情况下,我将处理许多其他对象内的许多对象。

为了说明这一点,我们假设我有一个World课程。

World课程中,有一个Level课程列表。

在每个Level类中,有一组Tile类。

在每个Tile课程中,有一个TopTile班级和一个BotTile班级。

BotTileTopTile类包含整数和字符串等。

在每个Level课程中,还有Entity个列表

每个Entity都有一个Inventory Items

正如您所看到的,有很多类,在这些类中有更多的类。我是否必须为每一个类写一个保存包装器?我知道我可以保存整个World类,据我所知,这只会将所有内容都堆放到一个文件中,但是有很多垃圾不需要保存在所有其他文件中类。我应该如何保存我的World课程?

为了澄清,当我提到保存包装器时,我指的是对象X中的一组方法,它们仅使用必要的参数来保存和加载X,从而消除所有垃圾。但是,我有很多可能被保存的对象,为每个对象编写包装似乎很多。

另一件事是,对于包含Inventory的{​​{1}}类,我只想保存库存的内容,而不是实际的Items类,因为没有任何变化关于每个Item。虽然会保存Item并不保存它包含的所有项目吗?我发现这有点令人困惑。什么被救了?什么没有得救?这都是使用我假设的对象的libGDX JSON解析器。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我在我的libGDX游戏中正是这样做的。你这样做:

{
    "object_name": "basic_left_gun",
    "object_type" : "player_ship_component",
    "object_subtype" : "player_ship_left_weapon",
    "subtype_properties" : 
        {
            "shot_name" : "basic_shot"
        },
    "is_animated": false,
    "is_dual_state": false,
    "is_destructible": true,
    "hitpoints": 16,
    "second_state_name": "",
}

所以看看" subtype_properties"领域。它内部有另一个JSON对象 。因此,当我在java中序列化和查询JSON对象时,当我执行json.get(" subtype_properties")时,我实际上只是获取另一个JSON对象。从那里我可以查询并获取属性。

理论上,你可以永远这样做。虽然我的方法是在每个对象的JSON中存储基本定义,然后使用上面嵌套的JSON对象将它们的属性链接在一起,或者使用相同的方法定义唯一属性。