Files
cocos/tools/levels-database.md
刘宇飞 d393302388 Complete Cocos Creator port with level bundles, themes, and tooling.
Adds level prefabs, theme assets, audio, extensions, and deployment scripts for the Unity WebGL migration.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-16 15:30:58 +08:00

80 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 关卡数据库 `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` ← Unity `LevelN.prefab` Tilemap烘焙进 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` 只做:
1. `resources.load('level-prefabs/LevelN')``instantiate`
2. 从预制体 `LevelMapData` 读取 `ground` / `border`
3.`spawns` 生成角色与道具
**不再**用代码 `drawGridDebug` 拼地图。
修改 JSON 后需重新烘焙:
```bash
python3 tools/bake_cocos_level_prefabs.py \
--db assets/resources/level/levels-database.json \
--out-dir assets/resources/level-prefabs
```
## 贴图(角色 / 砖块)
从 Unity `Assets/Texture` 导入:
```bash
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 重新导出
```bash
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 关。
## 增删查改示例(代码)
```typescript
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 中刷新资源并重新预览即可。