将XML文件转换为lua表?
|
我有一个从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解析然后使用生成的数据要快。
额外的垃圾乱码:
然后,我可以简单地在Drawing Isometric游戏世界中使用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用户,却没有真正找到任何可以帮助我的东西。
没有找到相关结果
已邀请:
1 个回复
亨尖玛次酥