等距场景编辑器——自行编辑2D瓦片场景地图

昨天 23:4282 浏览开发心得
video-5632451
一个可嵌入任何 UrhoX 项目的完整等距瓦片地图编辑器,适用于 RPG、策略、模拟经营等类型游戏的关卡设计。
horizontal linehorizontal line
声明:该工具仅作为场景编辑以及序列化,交互等功能需要用户自行在项目中定义
工具链接(会尝试申请添加skill)https://gitee.com/Nacchi/map-editor.git
后续会根据实际情况补充rule tile相关逻辑,实现tile map编辑自由
horizontal linehorizontal line
目录
1. 界面总览
2. 六种编辑工具
3. 双视图模式
4. 瓦片调色板
5. 瓦片命名与标签(Tag)
6. 图层系统
7. 图层组
8. 图层标签与行走规则
9. 选区与复制粘贴
10. 撤销与重做
11. 地图尺寸调整
12. 保存
13. 导出与导入 JSON
14. 游玩测试模式
15. 画布操作
16. 快捷键一览
17.瓦片图片规范
18.工具接入使用说明
horizontal linehorizontal line
1.界面总览
编辑器采用三栏布局:
TapTap
  • 顶部工具栏:编辑工具切换、视图模式切换、文件操作按钮
  • 中间左侧:等距画布(主编辑区域),支持缩放和平移
  • 中间右侧:侧边面板(250px),包含瓦片调色板、图层管理、图片资源
  • 底部状态栏:显示当前鼠标坐标、活跃图层、工具名称、选中瓦片
horizontal linehorizontal line
2.六种编辑工具
设计意图
六种工具覆盖了地图编辑的完整工作流——从逐格绘制到区域填充、从精确选取到批量操作,适应不同粒度的编辑需求。
工具说明
TapTap
每种工具在悬停时会显示不同颜色的高亮提示,方便识别当前处于哪种工具模式。
horizontal linehorizontal line
3.双视图模式
设计意图
编辑器支持制作两种不同视角的游戏场景:等距侧视(Isometric)和正视俯视(Top-down)。等距视角适用于 RPG、策略等需要立体透视感的游戏;正视视角适用于俯视角冒险、Roguelike 等以方格为基础的游戏。同一份地图数据可以在两种视角下编辑和预览,方便开发者根据游戏类型选择最终呈现方式。
使用方式
工具栏中有一个 视图切换按钮,点击即可切换:
TapTap
切换时相机会自动重置到初始位置。两种视角下所有编辑工具、图层操作、保存加载功能完全一致。
horizontal linehorizontal line
4.瓦片调色板
设计意图
调色板分为"颜色瓦片"和"图片瓦片"两类。颜色瓦片用于快速原型设计(不需要美术素材就能标注地形类型),图片瓦片用于正式美术素材的编辑。
颜色瓦片
编辑器内置 5 种预定义颜色瓦片,点击即可选中并自动切换到画笔工具:
TapTap
选中的瓦片会显示白色边框高亮。颜色瓦片的名称和标签都可以自定义修改(见下一节)。
图片瓦片
如何添加图片素材通过对话向 AI 助手发送指令,AI 会自动完成以下操作:
  1. 在 assets/ 下创建图片文件夹(如 assets/Tiles/)
  2. 将你提供的图片放入该文件夹
  3. 自动生成 manifest.json 清单文件
示例对话
"帮我把这几张图片放到 Tiles 文件夹里作为瓦片素材"
"用 AI 生成几张等距风格的地面瓦片,放到 assets/Ground/ 目录"
最终生成的目录结构如下:
TapTap
其中 manifest.json 内容为图片文件名列表:
TapTap
在编辑器中加载图片素材准备好后,在编辑器侧边面板的"图片资源"区域:
  1. 在文本框中输入文件夹名称(如 Tiles)
  2. 点击"扫描"按钮,编辑器读取 manifest.json 并加载所有图片
  3. 加载成功后图片以缩略图网格展示,点击选中即可在画布上绘制
horizontal linehorizontal line
5.瓦片命名与标签(Tag)
设计意图
命名:默认的"草地""水面"等名称可能不符合具体项目需求。自定义命名让导出的数据更有语义——比如将"草地"改名为"森林地面",在代码中读取地图数据时一目了然。
标签(Tag):标签是一个可选的字符串,用于为瓦片附加游戏逻辑标记,而不改变瓦片的视觉表现。标签的核心用途是配合"行走规则"系统实现碰撞检测——比如标记某些瓦片为 wall(不可行走)或 slow(减速区域)。标签也可以用于其他自定义用途,如标记刷怪点 spawn、宝箱位置 chest 等。使用方式在侧边面板选中一个瓦片后,下方的"瓦片属性"区域会显示:
  • 名称输入框:修改瓦片名称,按回车确认。所有使用该瓦片 ID 的格子都会更新名称。
  • ID 标识:显示瓦片的数字 ID(如 ID: 1,图片瓦片会标注 (图片))。
horizontal linehorizontal line
6.图层系统
设计意图
多图层系统是专业地图编辑器的标准功能。将地图内容分布在不同图层上,可以独立编辑地面、建筑物、装饰物等,互不干扰。图层还支持可见性控制、锁定、透明度调节,方便在复杂地图中专注于特定内容。
基本操作
TapTap
透明度
选中某个图层后,在图层详情区域会出现 透明度滑块(0% ~ 100%,步进 5%)。
  • 透明度影响该图层的渲染不透明度
  • 编辑模式下,非活跃图层会自动降低到 50% 透明度,让你更专注于当前编辑的图层
  • 预览模式下,所有图层按各自设定的透明度完整渲染
图层标签
选中图层后可以设置 图层级标签(如 collision、decoration)。图层标签与瓦片标签配合使用,可以实现更灵活的行走规则(详见"图层标签与行走规则"章节)。
horizontal linehorizontal line
7.图层组
设计意图
当地图层数较多时(如"地面""道路""建筑底部""建筑顶部""装饰""碰撞层"),逐个管理图层变得繁琐。图层组提供了一种 文件夹式的组织方式——将相关图层归入同一组,可以一键折叠收起、批量切换可见性和锁定状态。
使用方式
TapTap
典型用法
TapTap
编辑建筑时,折叠"地形组"和"逻辑组",只展开"建筑组",工作区域更整洁。需要测试碰撞时,展开"逻辑组"查看标记。
horizontal linehorizontal line
8.图层标签与行走规则
设计意图
地图编辑器不仅用于绘制视觉地图,还需要定义游戏逻辑。标签+行走规则系统让设计者可以 直接在编辑器内标注哪些区域可以行走、哪些区域是障碍,并通过"游玩模式"立即测试效果。
工作原理
  1. 给瓦片设置标签:如将"石头"瓦片的标签设为 wall
  2. 给图层设置标签:如将整个"碰撞层"的标签设为 block
  3. 行走规则判断(在游玩模式中生效):
  • 检查目标格子上所有可见图层的瓦片
  • 如果图层有标签,优先使用图层标签判断
  • 否则使用瓦片自身的标签判断
  • 标签对应的规则为 false → 不可行走
  • 没有匹配规则 → 按默认规则(默认可行走)
TapTap
horizontal linehorizontal line
9.选区与复制粘贴
设计意图
地图中经常有重复的结构(如对称的建筑、重复的路段)。选区+复制粘贴可以避免重复劳动,快速复制已有的地图片段到其他位置。
使用方式
  1. 按 M 切换到选区工具
  2. 左键拖拽选出一个矩形区域(金色边框标记)
  3. 按 Ctrl+C 复制选区内容(状态栏提示复制了多少格)
  4. 按 Ctrl+V 进入粘贴模式——鼠标位置会显示一个浅蓝色半透明预览
  5. 在目标位置左键点击,即可粘贴
  6. 按 Esc 取消粘贴模式或清除选区
  • 复制/粘贴操作只作用于当前活跃图层
  • 粘贴操作会被记录为一次撤销步骤
  • 如果目标图层已锁定,粘贴会被拒绝
horizontal linehorizontal line
10.撤销与重做
设计意图
编辑操作不可避免会出错,撤销/重做是编辑器的安全网。支持最多 100 步撤销历史,且拖拽绘制、矩形填充等批量操作会被合并为一次撤销步骤,确保一键撤销就能回退整个操作。
使用方式
TapTap
  • 每次新操作会清空重做历史
  • 调整地图尺寸后撤销历史会被清空(因为旧坐标可能越界)
  • 状态栏会提示"撤销"或"无可撤销操作"
horizontal linehorizontal line
11.地图尺寸调整
设计意图
允许在开发过程中灵活调整地图大小——从小尺寸原型逐步扩展到最终尺寸,或者缩小测试用的大地图。调整时已有的瓦片数据会尽量保留。
使用方式
  1. 在侧边面板的图层区域下方,找到"地图 W×H"标签
  2. 修改宽度或高度数值(范围 2 ~ 100)
  3. 点击"应用"按钮
  • 扩大地图:原有数据完整保留,新增区域为空
  • 缩小地图:超出新尺寸范围的瓦片数据会被裁剪
  • 应用后相机自动重置,撤销历史清空
horizontal linehorizontal line
12.保存
设计意图
编辑器通过导出 JSON 来持久化地图数据。导出的 JSON 可以保存到本地,也可以通过导入功能重新加载到编辑器中继续编辑。
使用方式
点击工具栏的 "导出" 按钮,编辑器会将当前地图数据序列化为 JSON 并输出到浏览器控制台(详见下一节"导出与导入 JSON")。编辑器还支持退出时自动保存到临时存档,重新进入编辑器时会自动恢复上次的编辑状态(WASM 环境刷新页面后丢失)。
horizontal linehorizontal line
13.导出与导入 JSON
设计意图
JSON 是通用的数据交换格式。导出 JSON 可以让地图数据被任何语言和工具读取,方便与其他项目或团队成员共享。导入功能则允许从外部 JSON 文件恢复地图。
导出
  1. 点击工具栏"导出"按钮
  2. 弹窗中显示 JSON 预览和操作提示
  3. JSON 数据会自动输出到浏览器控制台
  4. 按 F12 打开开发者工具 → Console 标签页
  5. 找到 ===== MAP JSON START ===== 和 ===== MAP JSON END ===== 之间的内容复制
由于 WASM 平台限制,编辑器内的剪贴板无法直接与系统剪贴板交互,需要通过浏览器控制台中转。
导入
  1. 将 JSON 内容保存为 _import.json 文件,放入 assets/mapjson/ 目录
  2. 点击工具栏"导入"按钮
  3. 编辑器会自动读取并解析该文件,恢复所有数据(地图尺寸、图层、瓦片、组、标签等)
JSON 数据格式(v4)
导出的 JSON 包含以下核心结构
TapTap
瓦片 ID 约定:0 = 空,1~5 = 颜色瓦片,100+ = 图片瓦片。
坐标约定:x(列)和 y(行)均从 1 开始。
稀疏存储:tiles 数组只包含非空瓦片,解析时先创建全零网格再填入。
horizontal linehorizontal line
14.游玩测试模式
设计意图
地图设计完成后,设计者需要亲身体验空间感——格子之间的距离是否合适?障碍物的摆放是否合理?通道是否太窄?游玩模式让你 不离开编辑器就能立即测试地图,用 WASD 控制一个角色在地图上移动,自动遵守行走规则(碰撞检测)。
使用方式
  1. 按 P 或点击侧边面板的"游玩"按钮进入游玩模式
  2. 编辑器自动切换到预览模式,并在地图中央生成一个角色
  3. 使用 WASD 控制角色移动(等距视角下方向已映射为菱形方向)
  4. 角色会被行走规则阻挡(需要提前设置瓦片/图层标签和行走规则)
  5. 再次按 P 或 Esc 退出游玩模式
TapTap
  • 角色在等距视角下显示为蓝色菱形,正视视角下显示为蓝色圆形
  • 相机会平滑跟随角色移动
  • 角色与其他物件瓦片会正确进行深度排序(不会穿模)
  • 游玩模式下所有编辑快捷键被禁用,只响应移动和退出操作
horizontal linehorizontal line
15.画布操作
平移
TapTap
缩放
TapTap
缩放比例不为 100% 时,画布右下角会显示当前缩放百分比(如 150%)。
悬停提示
鼠标悬停在画布上时,当前工具会在悬停瓦片上显示对应颜色的半透明高亮:
TapTap
horizontal linehorizontal line
16.快捷键一览
工具切换
TapTap
编辑操作
TapTap
画布导航
TapTap
horizontal linehorizontal line
17.瓦片图片规范
格式要求:PNG,带透明通道(RGBA)
尺寸规范(等距菱形瓦片):
TapTap
关键渲染规则(代码逻辑 IsoCanvas.lua:190-210):
  1. 宽度自适应 — 图片会被缩放到菱形全宽(tileWH * 2),所以所有瓦片宽度建议统一(如 128px)
  2. 底部锚定 — 图片的底边对齐到菱形的底顶点,所以:
  3. 透明度裁剪 — 不做菱形遮罩裁剪,靠 PNG 透明度自然生效
  • 地面瓦片画成标准等距菱形(约 2:1 比例),四周留透明
  • 墙壁/物体的底部宽度与地面菱形一致,高度自由延伸
  • 所有图片宽度保持一致(推荐 128px),引擎会自动等比缩放
瓦片图片规范(完整版)
两种视图模式
TapTap
同一张图两种模式共用
引擎用同一张 PNG 适配两种视图,缩放逻辑:
等距模式:  drawW = tileWH * 2 (菱形全宽),等比缩放高度
正视模式:  drawW = tdTileW    (格子宽度),等比缩放高度
所以一张图不需要做两个版本,引擎自动按宽度缩放。
推荐图片尺寸
地面瓦片
TapTap
TapTap
物体/墙壁瓦片
TapTap
关键:为什么外部生成的瓦片会异常
外部工具生成等距素材常用 30° 标准等距(宽高比约 1.73:1),而本编辑器用 2:1 像素等距,角度差导致素材和网格错位:
TapTap
生成素材时的提示词建议
2:1 pixel art isometric tile, 26.5 degree angle,
diamond shape with width:height ratio exactly 2:1,
transparent background, PNG format, 128px wide
horizontal linehorizontal line
18.工具接入使用说明
使用是请先告知嗒啦啦启用,如果没有看到如图按钮,可能是由于不同项目的分辨率问题,请自行调整
其余使用相关疑问可以直接向嗒啦啦提问(比如json解析,资源添加,调整网格大小和角度,使得与用户项目实际美术资源匹配等)
TapTap
9
5
4