Adds level prefabs, theme assets, audio, extensions, and deployment scripts for the Unity WebGL migration. Co-authored-by: Cursor <cursoragent@cursor.com>
2.5 KiB
2.5 KiB
关卡数据库 levels-database.json
单一数据源
| 文件 | 说明 |
|---|---|
assets/resources/level/levels-database.json |
全部关卡(增删查改改这个文件) |
assets/scripts/level/LevelDatabase.ts |
加载与 CRUD API |
assets/scripts/level/LevelRegistry.ts |
游戏内统一入口 |
每条关卡结构与 Unity 一致:
spawns←Levels*.cs(运行时由GameManager生成 Player/Prop)ground/border← UnityLevelN.prefabTilemap(烘焙进 Cocos 预制体)unityPrefab← 原 Unity 资源路径(便于对照)
关卡地图编辑面板(对齐 Unity Tile Palette)
见 tools/level-map-editor.md:中间编辑关卡网格,右侧选择 map-tiles/MapTile_* 模块绘制,保存后烘焙预制体。
关卡地图预制体(与 Unity Instantiate 一致)
| 路径 | 说明 |
|---|---|
assets/resources/level-prefabs/Level{N}.prefab |
地图视觉 + LevelMapData(Ground/Border 子节点) |
assets/scripts/level/LevelMapData.ts |
挂在预制体根节点,提供可走/阻挡逻辑 |
tools/bake_cocos_level_prefabs.py |
从 levels-database.json 批量生成预制体 |
运行时 GameManager 只做:
resources.load('level-prefabs/LevelN')→instantiate- 从预制体
LevelMapData读取ground/border - 按
spawns生成角色与道具
不再用代码 drawGridDebug 拼地图。
修改 JSON 后需重新烘焙:
python3 tools/bake_cocos_level_prefabs.py \
--db assets/resources/level/levels-database.json \
--out-dir assets/resources/level-prefabs
贴图(角色 / 砖块)
从 Unity Assets/Texture 导入:
python3 tools/import_unity_textures.py --unity-root "/path/to/主站"
# Creator 刷新 textures 后:
python3 tools/fix_tile_texture_metas.py
目录与主题:textures/default、silu、chinese、redArmy、numMan、snow、sanxing。
从 Unity 重新导出
cd /path/to/cocos/tfrh001
python3 tools/export_all_levels.py \
--unity-root "/path/to/主站" \
--output assets/resources/level/levels-database.json
调试可加 --limit 50 只导出前 50 关。
增删查改示例(代码)
import { getLevelConfig, setLevel, removeLevel, addLevel, getLevelIds } from './level/LevelRegistry';
const cfg = getLevelConfig(3);
setLevel({ ...cfg!, levelID: 99, spawns: [...] });
removeLevel(99);
console.log(getLevelIds());
直接编辑 JSON 后,在 Cocos 中刷新资源并重新预览即可。