我有一个从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替换为tile gid值。剩下的数据(变量需要添加到另一个表中,我可以使用)
我想要这样做的原因是因为使用本机Lua表比XML解析更快,然后使用结果数据。
额外的垃圾漫游:
然后我可以简单地使用Drawing Isometric game worlds处的for命令来生成显示。
它还允许我为ontop上的对象生成更多图层,例如
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用户并没有找到任何可以帮助我的东西。