Adds level prefabs, theme assets, audio, extensions, and deployment scripts for the Unity WebGL migration. Co-authored-by: Cursor <cursoragent@cursor.com>
4.0 KiB
4.0 KiB
关卡地图编辑(对齐 Unity Tile Palette)
布局(与 Unity 一致)
| 区域 | Unity | Cocos |
|---|---|---|
| 中间 | Level2 预制体(Ground + Border Tilemap) |
网格画布 = 当前关卡布局;烘焙后见 level-prefabs/LevelN.prefab |
| 右侧 | Tile Palette(Baseblock、JumpBlock、墙块…) | 地图模块 map-tiles/MapTile_*.prefab |
| 数据 | Levels*.cs + Addressables |
levels-database.json |
1. 启用扩展
- 扩展管理器 → 启用
level-map-editor - 菜单 扩展 → 关卡地图编辑 打开面板
2. 场景内格子吸附
自动吸附(推荐)
- 打开
level-prefabs/LevelN.prefab - 选中 LevelN 根节点 → 添加组件 GridSnapHelper
- 在场景中拖动 Ground/Border 下瓦片时,会自动吸附到等距格子中心,并可显示蓝色参考网格
或在关卡地图编辑面板点击 启用场景吸附助手(会为当前 Level 根节点添加 GridSnapHelper)。
手动吸附
- 在场景编辑器选中一个或多个瓦片节点
- 面板点击 场景选中吸附,立即对齐到最近格子
面板画布吸附
鼠标在编辑画布上移动时,高亮当前吸附格子并显示坐标 (x, y),点击/拖拽绘制时自动落在格子中心。
3. 绘制工具(对齐 Unity Tile Palette)
| 工具 | 快捷键 | 操作 |
|---|---|---|
| 画笔 | B |
右侧选瓦片后,点击/拖拽在网格上绘制 |
| 框选 | R |
拖拽矩形,松开后用当前瓦片填满区域 |
| 吸管 | I |
点击已有格子,吸取瓦片并切换为画笔 |
| 橡皮擦 | E |
点击/拖拽删除当前层(Ground/Border)上的格子 |
| 填充 | F |
油漆桶:填充相连的同类型格子(需先选瓦片) |
- 选择 Ground / Border 绘制层
- 工具栏 调色板 下拉选择主题
- 右侧点选瓦片(画笔/框选/填充需要;吸管/橡皮擦不需要)
- 在中间等距网格上操作;鼠标移动会高亮吸附格并显示坐标
- 保存 JSON → 烘焙预制体 → 打开 Level 预制体
生成主题调色板数据:
python3 tools/build_theme_palettes.py --unity-root "/path/to/主站"
3. 地图模块预制体
路径:assets/resources/map-tiles/
| 预制体 | 用途 |
|---|---|
MapTile_Baseblock |
可走地面 |
MapTile_JumpBlock |
跳跃格 |
MapTile_WallBlock |
阻挡墙 |
MapTile_Decor23 |
装饰墙(Unity 素材切图-23) |
重新生成模块与调色板列表:
python3 tools/bake_map_tile_prefabs.py
首次使用前在 Creator 中 刷新资源,确保 JumpBlock.png、WallBlock.png、Decor23.png 已导入。
4. 在编辑器里看到砖块(与 Unity 一致)
烘焙后的 LevelN.prefab 每个格子带 Sprite + UITransform(丝路贴图)。
打开预制体后若场景是空的:
- 场景编辑器左上角切到 2D
- 按 F 聚焦到选中节点,或缩放到原点附近(格子约在 x,y ∈ [-200, 200])
- 展开 Ground / Border,应能看到等距砖块贴图
与 Unity 差异:Unity 用 Tilemap 绘制;Cocos 用 子节点 + Sprite(逻辑仍读 levels-database.json)。
5. 在场景中手动摆放(可选)
与 Unity 在 Scene 里拖 Tile 类似:
- 在资源管理器打开
level-prefabs/Level2.prefab - 从
map-tiles将MapTile_*拖到Ground或Border节点下 - 设置节点位置为格子坐标 × 56(
CELL_PIXEL) - 保存后仍需同步
levels-database.json(用面板编辑或重新导出)
推荐以 面板编辑 + 烘焙 为主,保证 JSON 与预制体一致。
5. 从 Unity 重新同步
python3 tools/export_all_levels.py --unity-root "/path/to/主站" --output assets/resources/level/levels-database.json
python3 tools/bake_cocos_level_prefabs.py --db assets/resources/level/levels-database.json --out-dir assets/resources/level-prefabs
python3 tools/bake_map_tile_prefabs.py