我一直在互联网上搜索如何在libgdx中使用JSON,特别是加载和保存对象,但我能找到的只是处理1个对象的教程。在我的情况下,我将处理许多其他对象内的许多对象。
为了说明这一点,我们假设我有一个World
课程。
在World
课程中,有一个Level
课程列表。
在每个Level
类中,有一组Tile
类。
在每个Tile
课程中,有一个TopTile
班级和一个BotTile
班级。
BotTile
和TopTile
类包含整数和字符串等。
在每个Level
课程中,还有Entity
个列表
每个Entity
都有一个Inventory
Items
正如您所看到的,有很多类,在这些类中有更多的类。我是否必须为每一个类写一个保存包装器?我知道我可以保存整个World
类,据我所知,这只会将所有内容都堆放到一个文件中,但是有很多垃圾不需要保存在所有其他文件中类。我应该如何保存我的World
课程?
为了澄清,当我提到保存包装器时,我指的是对象X
中的一组方法,它们仅使用必要的参数来保存和加载X
,从而消除所有垃圾。但是,我有很多可能被保存的对象,为每个对象编写包装似乎很多。
另一件事是,对于包含Inventory
的{{1}}类,我只想保存库存的内容,而不是实际的Items
类,因为没有任何变化关于每个Item
。虽然会保存Item
并不保存它包含的所有项目吗?我发现这有点令人困惑。什么被救了?什么没有得救?这都是使用我假设的对象的libGDX JSON解析器。
任何建议都将不胜感激。
答案 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对象将它们的属性链接在一起,或者使用相同的方法定义唯一属性。