我有一个由Tiled生成的XML文件(格式:http://sourceforge.net/apps/mediawiki/tiled/index.php?title=TMX_Map_Format),以下是例子:
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.0" orientation="isometric" width="100" height="100" tilewidth="64" tileheight="32">
<tileset firstgid="1" name="grass_and_water_0" tilewidth="64" tileheight="64">
<image source="tiles/grass_and_water_0.png" trans="ff00ff" width="64" height="64"/>
</tileset>
<layer name="Tile Layer 1" width="100" height="100">
<data>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
<tile gid="1"/>
</data>
</layer>
</map>
这只是一段代码,实际文件超过10,000行。
由于性能原因,我正在尝试将其从XML文件转换为Lua表格,类似于以下内容:
variables = [tilewidth=64,tileheight=64,width=100,height=100]
tileset = [1=[source="tiles/grass_and_water_0.png",width=64,height=64],....]
tile_map[][] = [[1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1]]
将数字1替换为瓷砖gid值,其余数据(变量)需要添加到另一个表中以供使用。
我想这样做的原因是使用本地Lua表比XML解析然后使用结果数据更快。
额外的废话:
然后我可以简单地使用for命令在绘制等角游戏世界来生成显示。
这也将允许我为上面的对象生成更多的图层,例如。
objects_map[][] = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,3,3,3,3,4,4,5,5,5,5,0,0],
[0,0,3,3,3,3,3,4,6,6,6,5,0,0],
[0,0,3,3,3,3,4,1,6,5,5,6,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0]]
然后我可以在一个绘制调用中显示它,将两个数组组合并用tile_map和objects表中的表数据替换0,创建类似以下内容的东西:
result_map[][] = [[1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,1,3,3,3,3,4,4,5,5,5,5,1,1],
[1,1,3,3,3,3,3,4,6,6,6,5,1,1],
[1,1,3,3,3,3,4,1,6,5,5,6,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1]]
看起来很简单,我只需要想办法将XML转换成tilemap。
如果有任何帮助或指导可以提供,那就太好了,我已经查看了lua用户文档,但并没有找到有用的信息。