#tiled #tile #layer #editor #image #object #tiled-json

tiled-json-rs

一个用于解析和交互 Tiled 编辑器 JSON 文件的包

8 个版本

0.2.6 2019 年 7 月 6 日
0.2.5 2019 年 7 月 6 日
0.2.4 2019 年 6 月 27 日
0.1.0 2019 年 6 月 26 日

#1532 in 游戏开发

MPL-2.0 许可证

36KB
740

Tiled 编辑器 JSON 解析器

文档

用法

Cargo.toml

[dependencies]
tiled-json-rs = "0.1.0"

从文件加载

let map = tiled::Map::load_from_file(PathBuf::from("assets/test.json"))
            .expect("Failed to load map");

遍历瓦片集

for tileset in &map.tile_sets {
    let name = tileset.name.clone();
    let mut path = PathBuf::from("assets");
    path.push(tileset.image.clone());
    // Do stuff
}

遍历层

fn render_layers(
        layers: &Vec<Layer>,
    ) {
    for layer in layers {
        match &layer.layer_type {
            tiled::LayerType::TileLayer(tiles) => {
                do_something(tiles);
            }
            tiled::LayerType::Group { layers } => {
                &mut render_layers(layers);
            }
            tiled::LayerType::ImageLayer(image) => {
                do_something_else(image);
            }
            tiled::LayerType::ObjectGroup(objects) => {
                and_another_thing(objects);
            }
        }
    }
}

render_layers(&map.layers);

备注

  • 瓦片 GID 从 1 开始,0 保留用于 瓦片
  • 本地 ID 对于 TileSet 从 0 开始,仅适用于 TileSet
  • 瓦片集必须在 JSON 中包含(这将是临时的,直到完成路径解析)
  • 仅在可能需要澄清的地方提供文档注释。通常情况下,命名应该足够好,以便意图可以自我描述。

许可证

MPL v2

依赖

~1–1.8MB
~38K SLoC