使用bevy_ecs_tilemap加载Tiled .tsx文件失败的问题求助
解决Bevy中bevy_ecs_tilemap加载外部TSX瓦片集的路径问题
背景
使用Bevy开发2D游戏,借助bevy_ecs_tilemap crate结合Tiled工具使用瓦片集,文件结构如下,目标是加载world.tmx:
tilesets ├── floor │ ├── ground.tiled-project │ ├── ground.tiled-session │ ├── ground.tsx │ ├── Rules │ │ └── autotile rules.tmx │ ├── rules.txt │ └── world.tmx └── test.tmx
问题
按照官方Tiled示例操作后,运行时出现错误:
WARN bevy_asset::asset_server: encountered an error while loading an asset: Could not load TMX map: Could not open 'tilesets/floor/ground.tsx'. Error: No such file or directory (os error 2)
但ground.tsx文件实际存在。
已尝试操作
- 加载不依赖外部文件的瓦片集
test.tmx可正常运行。
解决方法
修正Tiled中TSX的引用路径
打开Tiled中的world.tmx,查看外部瓦片集的引用路径。由于world.tmx和ground.tsx在同一目录下,直接将路径改为ground.tsx即可,不要带上层目录前缀,避免路径解析重复。确认Bevy资源目录配置
确保tilesets被正确设置为Bevy的资源目录。可以在代码中明确指定:App::new() .add_plugins(DefaultPlugins.set(AssetPlugin { asset_folder: "tilesets".to_string(), ..default() })) // 其他插件与逻辑代码加载
world.tmx时使用路径floor/world.tmx,而非tilesets/floor/world.tmx,防止路径叠加错误。清理Tiled缓存文件
删除ground.tiled-project和ground.tiled-session文件,重新打开world.tmx并保存,避免旧路径缓存导致的引用错误。检查文件权限与大小写
确保系统对ground.tsx有读取权限;在Linux/macOS环境下,注意路径和文件名的大小写一致性,避免因大小写不匹配导致的文件找不到问题。
内容的提问来源于stack exchange,提问作者Jove
相关产品推荐
相关产品推荐

