7 个版本
0.3.1 | 2020年5月28日 |
---|---|
0.3.0 |
|
0.2.2 | 2020年5月26日 |
0.1.2 | 2020年4月30日 |
#15 在 #tileset
每月 22 次下载
38KB
750 行
TMX
TMX 是一个用于在 Rust 中加载 Tiled (XML 和 JSON) 地图的库。
使用方法
cargo add tmx
示例
加载地图
use tmx::Map;
fn main() -> Result<(), Box<dyn Error>> {
let map = r##"
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.2" tiledversion="1.3.3" orientation="isometric" renderorder="right-down" width="4" height="4" tilewidth="16" tileheight="16" infinite="0" nextlayerid="2" nextobjectid="1">
<tileset firstgid="1" name="test" tilewidth="16" tileheight="16" tilecount="256" columns="16">
<image source="tiles16.png" width="256" height="256"/>
</tileset>
<layer id="1" name="Tile Layer 1" width="4" height="4">
<data encoding="csv">
1,2684354561,1,2147483649,
1610612737,3221225473,1073741825,3221225473,
2147483649,3758096385,1073741825,536870913,
536870913,1073741825,3758096385,2147483649
</data>
</layer>
</map>
"##;
let map = Map::from_xml(map)?;
println!("{:?}", map);
Ok(())
}
加载瓦片集
use tmx::Tileset;
fn main() -> Result<(), Box<dyn Error>> {
let tileset = r##"
<?xml version="1.0" encoding="UTF-8" ?>
<tileset version="1.2" tiledversion="1.3.3" name="tiles16" tilewidth="16" tileheight="16" tilecount="256" columns="16">
<image source="tiles16.png" width="256" height="256" />
<tile id="0" type="Solid" />
<tile id="1" type="Solid" />
<tile id="2" type="Solid" />
<tile id="3" type="OneWay" />
</tileset>
"##;
let tileset = Tileset::from_xml(tileset)?;
println!("{:?}", tileset);
Ok(())
}
有关更多信息,请参阅 文档。
TMX 地图格式支持
元素 | 支持 |
---|---|
<map> |
✅ 完全支持 |
<editorsettings> |
🛑 无支持 |
- <chunksize> |
🛑 无支持 |
- <export> |
🛑 无支持 |
<tileset> |
⚠️ 部分支持 |
- <tileoffset> |
🛑 无支持 |
- <grid> |
🛑 无支持 |
- <image> |
✅ 完全支持 |
- <terraintypes> |
🛑 无支持 |
- - <terrain> |
🛑 无支持 |
- <tile> |
✅ 完全支持 |
- - <animation> |
✅ 完全支持 |
- <wangsets> |
🛑 无支持 |
- - <wangset> |
🛑 无支持 |
<layer> |
✅ 完全支持 |
- <data> |
✅ 完全支持 |
- <chunk> |
✅ 完全支持 |
- <tile> |
✅ 完全支持 |
<objectgroup> |
🛑 无支持 |
- <object> |
🛑 无支持 |
- <ellipse> |
🛑 无支持 |
- <point> |
🛑 无支持 |
- <polygon> |
🛑 无支持 |
- <polyline> |
🛑 无支持 |
- <text> |
🛑 无支持 |
<imagelayer> |
🛑 无支持 |
<group> |
🛑 无支持 |
<属性> |
🛑 无支持 |
- <property> |
🛑 无支持 |
特性
以下特性默认可用。
特性 | 描述 |
---|---|
xml |
允许加载XML地图。 |
base64-data |
允许加载Tile Layer Format为Base64(未压缩)的地图。 |
gzip-data |
允许加载Tile Layer Format为Base64(gzip压缩)的地图。 |
zlib-data |
允许加载Tile Layer Format为Base64(zlib压缩)的地图。 |
zstd-data |
允许加载Tile Layer Format为Base64(Zstandard压缩)的地图。 |
许可
依赖
~1.6–3.5MB
~66K SLoC