Adds level prefabs, theme assets, audio, extensions, and deployment scripts for the Unity WebGL migration. Co-authored-by: Cursor <cursoragent@cursor.com>
80 lines
2.5 KiB
Markdown
80 lines
2.5 KiB
Markdown
# 关卡数据库 `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 中刷新资源并重新预览即可。
|